ASP.NET MVC 4避免生成datetime的data-val-date

bad*_*ado 6 validation datetime asp.net-mvc-4

如何避免为从Datetime属性创建的元素生成html属性"data-val-date"?

该模型:

public class RegisterModel
{
    [Required]
    [Display(Name = "Date of birth")]
    public DateTime? DateOfBirth { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

风景:

@Html.LabelFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth)
Run Code Online (Sandbox Code Playgroud)

实际上,我正在创建一个用于选择出生日期的三个下拉列表元素,它不提供日期格式的值.我见过的一些解决方案包括一个解决方法:使用javascript删除验证.我设想的解决方案是将DateTime属性拆分为每个值(日,月,年)的三个长属性.

nic*_*ojs 15

好吧,这花了我一个下午的工作......显然mvc4决定是时候在viewmodel上的每个datetime属性上呈现data-val-date ="Message"了.我试图修改此默认行为但没有成功.

这解决了我的问题:

$.validator.addMethod('date',
    function (value, element) {
        return true; // since MVC4 data-val-date is put on EVERY vm date property. Default implementation does not allow for multiple cultures...
    });
Run Code Online (Sandbox Code Playgroud)

您还可以尝试在共享的EditorFor文件夹中编写名为"DateTime.cshtml"的编辑器模板,但不要在那里使用TextBoxFor,因为那个也被污染了.


Eri*_*sch 0

data-val-date 由验证系统用来验证日期。如果删除它,客户端验证将不起作用。

如果这就是您想要的,那么只需禁用客户端验证即可。