【问题标题】:what exactly is strongly typed View data in Asp.Net MVCAsp.Net MVC 中的强类型视图数据到底是什么
【发布时间】:2011-01-12 07:26:35
【问题描述】:

Asp.Net MVC 中的“强类型视图数据”是什么意思?

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-views


    【解决方案1】:

    每个视图都有一个Model 属性。强类型化视图意味着使其继承自某个ViewPage<T>,并且Model 属性变为T 的类型。如果您不强类型化视图,则模型是“对象”类型。

    强烈键入视图的模型的优点在于您可以直接访问模型的属性。您可以获得智能感知和编译器检查,而不是依赖于使用“魔术字符串”来访问 ViewData 字典 - 如果您的模型发生更改,它将在运行时中断。

    例如,如果你有

    public class Person
    {
       public int Age { get; set; }
    }
    

    并且您在 Person 类上设置了强类型视图,您将能够从视图模板访问 Model.Age。如果您的 View 不是强类型的,那么 Model 将没有可供您访问的属性,您必须将其显式转换为类型或通过 ViewData 字典传递您的数据。

    要强类型化这个视图,你只需让它继承自ViewPage<Person>

    【讨论】:

      【解决方案2】:

      ASP.NET MVC 中的强类型视图继承自 System.Web.Mvc.ViewPage<T>,并包含类型由 T 指定的 Model 属性。这允许智能感知在您的视图中工作。

      【讨论】:

        【解决方案3】:

        假设您需要在视图上显示几条松散相关的数据:联系信息、销售预测和通话记录。您可以简单地将它们注入 ViewData 并将它们拉出并从视图中强类型化它们,但是更好的方法是创建一个自定义模型来封装其中的每一个。然后,您将在此自定义模型中强烈键入视图本身。除了可测试性等其他好处之外,它还有助于类型安全并使代码辅助更加直观。

        【讨论】:

          猜你喜欢
          • 2011-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多