繁体   English   中英

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

[英]MVC Customizing display template: Model.Value vs @ViewData.Model

我看过两个“自定义显示模板”示例。

在1.示例中,程序员使用Model.Value;在2.示例中,他使用@ ViewData.Model。

示例1(DateTime视图:)

@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/>

它们之间有什么区别?

选择什么?

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

让我们以产品(视图)模型为例。 产品将具有价格,说明,SKU以及大多数情况下的库存指示。

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

有点离题,但在我们公司,对于允许视图执行的操作我们有非常严格的规则。 简而言之,不允许更改/修改任何数据(甚至不包括页面标题!)或检索任何数据。 我们视图中唯一允许的代码是条件构造和对辅助方法的调用。 如果团队中的新开发人员从没有像SuperSimpleViewEngine(来自NancyFx)或XsltViewEngine这样的“评估”结构的视图引擎开始,这将有所帮助。 Razor和WebForms使其易于“欺骗”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM