編輯器模板
編輯器模板是重用 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*@