2017-10-18 80 views
2

我想区分日期为DateTime,如:鲜明的日期和DateTime在MVC.net应用

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型动物插件初始化和验证方法,使用datepi克尔和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

使用System.ComponentModel.DataAnnotations上述领域你有没有考虑日期时间显示的属性格式化选项与的HtmlHelper渲染为?试图自己创建一个新的类型可能后来证明是一个不必要的头痛,因为DateTime几乎在所有/每种语言中实现。 – Tiramonium

回答

1

你可以改变什么类型的这是代表当由模型

[DataType(DataType.Date)] 
public DateTime Date { get; set; } 
[DataType(DataType.DateTime)] 
public DateTime DateTime { get; set; } 
+0

类型日期是未定义的,你的意思是'公共DateTime日期'而不是? – GGO

+0

@GGO对不起! –

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