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的几个小问题

是否可以创建自定义 ASP.NET MVC 强类型 HTML Helper?

ASP.NET MVC3 - 处理来自强类型列表框的多个值的问题

ASP.Net Core MVC 如何针对强类型模型发布未知数量的字段