Asp.net-Mvc

如何為 DisplayFor() 創建 MVC Razor 模板

  • April 18, 2011

我的視圖模型中有幾個僅顯示的屬性,但我需要使用 jQuery 檢索它們的值以在頁面上執行計算。標準*Html.DisplayFor()*方法只是將它們的值寫入頁面。我想創建一個剃刀模板,它允許我將每個元素呈現為:

<span id="ElementsId">Element's value</span>

我知道我可以在Html.DisplayFor()中指定一個模板以使用特定模板來呈現屬性,但是在該模板中如何辨識要寫入span標籤的id屬性?

@Html.DisplayFor(model => model.Element, "MyTemplate");

好的,我找到了它,它實際上非常簡單。在我的Views\Shared\DisplayTemplates文件夾中,我的Reading.cshtml包含以下內容:

@model System.Int32
<span id="@ViewData.ModelMetadata.PropertyName">@Model</span>

這使用屬性的名稱作為id屬性和屬性的值作為內容來呈現正確的標籤:

<span id="Reading">1234</span>

在視圖文件中,可以使用以下命令呼叫:

@Html.DisplayFor(model => model.Reading, "Reading")

或者,如果模型屬性使用*UIHint(“Reading”)進行修飾,則可以在呼叫DisplayFor()*時忽略模板名稱,它仍將使用模板呈現:

@Html.DisplayFor(model => model.Reading)

這應該同樣適用於自定義編輯器模板。

引用自:https://stackoverflow.com/questions/5710140