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