編輯器模板

編輯器模板是重用 Razor 程式碼的好方法。你可以將編輯器模板定義為 Razor 部分檢視,然後在其他檢視中使用它們。

編輯器模板通常存在於 Views/Shared/EditorTemplates/資料夾中,儘管它們也可以儲存到 Views/ControllerName/EditorTemplates/資料夾中。檢視的名稱通常是你要使用模板的物件的名稱,例如 <type>.cshtml

這是 DateTime 的簡單編輯器模板:

@model DateTime
<div>
   <span>
      @Html.TextBox("", Model.ToShortDateString(), new { data_date_picker="true" })
   </span>
</div>

將檔案另存為 Views / Shared / EditorTemplate / DateTime.cshtml

然後,使用 EditorFor 在另一個檢視中呼叫此模板程式碼:

@Html.EditorFor(m => m.CreatedDate)

還有一個 UIHint 屬性來指定檔名:

public class UiHintExampleClass
{
    [UIHint("PhoneNumber")]
    public string Phone { get; set; }
}

Views / Shared / EditorTemplates / PhoneNumber.cshtml 中定義此電話號碼模板。

也可以為自定義型別定義編輯器模板。

這是一個名為 SubModel 的自定義型別:

public class SubModel
{
    public Guid Id { get; set;} 
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Model
{
    public Guid Id { get; set; }
    public DateTime Created {get; set; }
    
    public SubModel SubModel{get; set; }
}

這是 SubModel 的 EditorTemplate:

@model SubModel
<div class="form-group">
    @Html.LabelFor(m => m.FirstName)
    @Html.TextBoxFor(m => m.FirstName)
</div>
<div class="form-group">
    @Html.LabelFor(m => m.LastName)
    @Html.TextBoxFor(m => m.LastName)
</div>

現在,模型檢視簡單地變為:

@model Model
@Html.EditorFor(m => m.CreatedDate)
@Html.EditorFor(m => m.SubModel, new { @Prefix = "New"}) 
@* the second argument is how you can pass viewdata to your editor template*@