【发布时间】:2011-01-12 07:26:35
【问题描述】:
Asp.Net MVC 中的“强类型视图数据”是什么意思?
谢谢
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-views
Asp.Net MVC 中的“强类型视图数据”是什么意思?
谢谢
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-views
每个视图都有一个Model 属性。强类型化视图意味着使其继承自某个ViewPage<T>,并且Model 属性变为T 的类型。如果您不强类型化视图,则模型是“对象”类型。
强烈键入视图的模型的优点在于您可以直接访问模型的属性。您可以获得智能感知和编译器检查,而不是依赖于使用“魔术字符串”来访问 ViewData 字典 - 如果您的模型发生更改,它将在运行时中断。
例如,如果你有
public class Person
{
public int Age { get; set; }
}
并且您在 Person 类上设置了强类型视图,您将能够从视图模板访问 Model.Age。如果您的 View 不是强类型的,那么 Model 将没有可供您访问的属性,您必须将其显式转换为类型或通过 ViewData 字典传递您的数据。
要强类型化这个视图,你只需让它继承自ViewPage<Person>。
【讨论】:
ASP.NET MVC 中的强类型视图继承自 System.Web.Mvc.ViewPage<T>,并包含类型由 T 指定的 Model 属性。这允许智能感知在您的视图中工作。
【讨论】:
假设您需要在视图上显示几条松散相关的数据:联系信息、销售预测和通话记录。您可以简单地将它们注入 ViewData 并将它们拉出并从视图中强类型化它们,但是更好的方法是创建一个自定义模型来封装其中的每一个。然后,您将在此自定义模型中强烈键入视图本身。除了可测试性等其他好处之外,它还有助于类型安全并使代码辅助更加直观。
【讨论】: