我想将Date区分为DateTime,如:
public class ViewModel {
public Date Date { get; set; }
public DateTime DateTime { get; set; }
}
在我看来,我想称之为:
@Html.EditorFor(p => Model.Date)
@Html.EditorFor(p => Model.DateTime)
渲染:
<input data-val="true" data-rule-date="true" data-val-date="Must be a date." type="date" value="" aria-describedby="field-error"/>
<input data-val="true" data-rule-datetime="true" data-val-date="Must be a datetime." type="datetime" value="" aria-describedby="field-error"/>
我想要这样做的原因是,有2个不同的插件初始化和验证方法,使用datepicker和jquery验证插件,如:
<script type="text/javascript">
$.validator.addMethod("date", function(value, element) { [date validation code] });
$("[type='date']").datepicker({ format:"dd/MM/yyyy" });
$.validator.addMethod("datetime", function(value, element) { [time validation code] });
$("[type='datetime']").datetimepicker({ format:"dd/MM/yyyy HH:mm:ss" });
</script>
我的问题是:我是否有义务宣布一个新的结构Date
和他的Html.EditorFor
实现,或者有一种更简单的方法?
答案 0 :(得分:1)
您可以使用ViewModel中的[UIHint]
属性重定向到EditorTemplate。不需要Date
结构。
public class ViewModel {
[UIHint("Date")]
public DateTime Date { get; set; }
public DateTime DateTime { get; set; }
}
通过此声明,@Html.EditorFor(m => m.Date)
将查找名为Date.cshtml
的EditorTemplate,并将DateTime
作为模型传递给此编辑器。
有关详情,请参阅:UIHint, DisplayTemplates, and EditorTemplates in MVC。
答案 1 :(得分:1)
通过在模型中的字段上方使用DBNull
,您可以更改使用HTMLHelper呈现时表示的类型
System.ComponentModel.DataAnnotations