我希望能够创建一个属性,例如[AttachDatePicker]来装饰我的ViewModel日期时间属性,所以当我使用脚手架时,它输出例如data-datepicker是html元素的html属性,我希望将datepicker附加到。
我可以基于微软示例here来做到这一点,但它感觉不对,因为它与我需要的验证无关。
理想情况下,我想避免创建自定义模板。有什么想法吗?
答案 0 :(得分:0)
为什么不定义Editor Template并将DateTime属性归为[UIHint]
?
例如,创建Views / Shared / EditorTemplates / Datepicker.cshtml
@model DateTime
@{
IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
// TODO: retrieve annotations from Model Metadata and add html attributes accordingly, e.g. "required"
htmlAttributes.Add("data-datepicker", "");
}
<div class="@* TODO: set classes depending on your CSS framework *@">
@Html.TextBox("", Model, htmlAttributes)
</div>
使用[UIHint("{name of editor template}")]
[Required] // example of an annotation you might want to handle
[UIHint("Datepicker")]
public DateTime SelectedDate { get; set; }
使用EditorFor
渲染属性,这将调度到正确的模板
@Html.EditorFor(m => m.SelectedDate)