我正在制作一个类似ASP的向导部分。Net MVC网站,允许用户发布数据并以前进或后退方向重定向到下一页。也就是说,如果用户单击下一步,它将保存并转到下一页。如果他们反击,它会保存并转到上一页。我在表单中使用隐藏字段来传递引用页的值。我的问题是关于存储引用页面值的合适位置。我正在使用强类型视图。我应该为这个页面添加一个引用页面字段到我的视图模型类,还是使用ViewData是可以接受的?
我问这个问题已经超过2周了,没有答案,但与此同时,我对ASP的了解。. Net MVC已经发展了,所以我将回答我自己的问题。首先,我要提到的是,在我问这个问题之前,我一直只使用ViewModel而不是ViewBag,所以我的直觉是使用ViewModel,但在我看来,我需要传递的信息,引用的URL,不属于模型,因为它不是我的数据的一部分,它只是一块"助手"信息,辅助导航。我认为我犹豫将引用Url放在ViewModel中是因为当时我的视图模型是完全包含域模型类的容器类,并且由于视图的关注点不应该污染域模型,所以我不想将引用Url放在我的域模型中。
从那时起,我已经放弃了"视图模型作为域模型的容器"的方法,取而代之的是使用映射到域模型的自定义视图模型,但也可以包含在我的域模型中不存在的信息,比如引用URL。当我发现这篇文章问了一个和我类似的问题时,我已经得出了这个结论:
ViewModels or ViewBag?
这篇文章强化了我的观点,并简洁地总结了我目前对视图模型角色的看法:"这就是视图模型。为满足视图的需求而专门定义的类。"