ASP.NET MVC模型与ViewData用于选择列表

7
我有一个ASP.NET MVC应用程序,其中包含许多下拉列表和多选列表。基本上是许多选项列表。
我的问题是:将这些列表作为模型的一部分传递到视图中还是作为ViewData更好?
目前,我将它们作为ViewData传递,因为我不真正需要它们在模型上,而且它们似乎对于在模型上传递来说可能很笨重(我得到所选的项目或项目,这真的是我所需要的)。缺点是,ViewData在视图上需要转换类型,这不像强类型模型那样好。
这里是否有最佳实践?甚至对于这两者的优缺点的建议也将不胜感激。
2个回答

6

我建议您使用ViewModels来传递数据。使用"magic strings"和ViewData容易出错,我更喜欢使用智能感知而不是试图记住那些"magic strings"。并且您不需要在控制器中创建SelectLists。只需使用一些IEnumerable并在视图中使用MvcContrib的ToSelectList扩展方法即可。


1
作为惯例,我们已经尽力消除了魔术字符串。这不仅是因为智能感知非常棒,还因为魔术字符串总是可以编译通过。然后它们有机会在运行时崩溃。痛苦啊...强类型的东西在编译时就会崩溃,这使得错误更容易被检测到。 - Craig Huber

-1

如果我只需要传递一个项目到视图中,我倾向于使用ViewData。因此,如果您要发送多个对象并需要填充多个下拉列表,则应创建视图模型。我还会在Web应用程序项目中创建该视图模型,因此,如果您的视图模型具有SelectList对象,则您的域模型中不需要对MVC dll进行引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接