ASP.NET MVC 强类型视图与否?
Posted
技术标签:
【中文标题】ASP.NET MVC 强类型视图与否?【英文标题】:ASP.NET MVC strongly typed views or not? 【发布时间】:2010-11-29 11:16:47 【问题描述】:最佳实践是什么 - 只使用不带任何参数的强类型视图,通过 ViewData 字典,或者在视图中使用类似这样的东西是一个不错的主意:
<%: (string)ViewData["helloMessage"]%>
谢谢。
【问题讨论】:
【参考方案1】:您应该更喜欢强类型视图。在某些情况下,您只需要一个不属于模型的字符串,就像您的示例中那样,那么使用它就可以了。另一种方式是将这个变量封装到一个类中,然后将该类传递给视图。结果将是一个强类型视图:-)
我个人不喜欢魔法字符串。
【讨论】:
如果你只是将一个字符串传递给视图,你不需要为这个字符串创建一个特殊的类。相反,将字符串类本身作为模型传递:string a = ""; return View(a);
此外,如果它是字符串,则必须执行 return View((object)a);
以便字符串不会与视图名称混淆 - 但是,您可以保留视图指向一个字符串模型。【参考方案2】:
使用“魔术字符串”没有错 但它们可能会出现打字错误。
在 MVC 3 中,控制器中有一个动态对象 ViewModel
,它对应于视图中的视图对象。
所以你可以在控制器中分配ViewModel.MyData="something";
,并在你的视图中使用它作为@View.MyData
这是一种更好的方式。
只有强类型视图可以从编译时检查中受益。 由您决定。 我个人使用动态对象。
【讨论】:
MVC 3 中的动态对象方法很棒。我也经常使用它;-)以上是关于ASP.NET MVC 强类型视图与否?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 强类型部分视图,给出无法加载类型错误
带有 DropDownList 的 ASP.NET MVC 强类型视图
是否可以创建自定义 ASP.NET MVC 强类型 HTML Helper?