簡體   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