MVC自定义显示模板:Model.Value vs @ ViewData.Model

时间:2016-12-18 22:10:20

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

我已经看过两个"显示模板定制"实例

在1.示例程序员中使用Model.Value,在2.示例中,他使用@ ViewData.Model .-见下文

示例1(日期时间视图:)

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : "", new { @class = "ka_" })

示例2:

<a href="@ViewData.Model" target="_blank">@ViewData.Model<a/>

他们之间有什么区别?

选择什么?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,您在视图中同时使用它们。该模型为您的主视图指定数据。它是控制器操作创建的数据。 ViewData字典通常由其他组件填充。

我们以产品(视图)模型为例。产品将有价格,描述,sku,并且在大多数情况下是库存指示。

您的产品(查看)模型不包含任何用户信息,网站导航数据的数​​据。该数据由其他组件放置在ViewData字典中,并且(父)视图可以使用它来呈现整个页面。

有点偏离主题,但在我们公司,我们对允许查看的内容有非常严格的规定。简而言之,它不允许更改/修改任何数据(甚至不是页面标题!)或检索任何数据。我们视图中允许的唯一代码是条件构造和对辅助方法的调用。如果团队中的新开发人员开始使用没有像'SuperSimpleViewEngine(来自NancyFx)或XsltViewEngine这样的'eval'结构的视图引擎,这会有所帮助。 Razor和WebForms让它很容易'欺骗'..