7

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

该模型:

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

风景:

@Html.LabelFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth)

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

4

3 回答 3

15

好的,这花了我一个下午的时间......显然 mvc4 决定是时候在视图模型上的每个日期时间属性上呈现 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...
    });

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

于 2012-12-27T15:30:45.713 回答
0

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

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

于 2012-09-26T17:58:35.480 回答
0

在你的 global.asax 文件中将它添加到你的应用程序开始,表单应该会触发。

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
于 2014-03-27T19:49:51.780 回答