Jquery ASP.NET MVC为非必填字段添加验证

Jquery ASP.NET MVC为非必填字段添加验证,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我有一个带有属性“CultureId”的模型类“Country”,该属性未按要求标记。另一个类“CountryViewModel”拥有相同的属性“CultureId” 在呈现“Create”视图时,我注意到验证数据属性被添加到了“CultureId”文本框中,尽管没有添加任何数据注释 我正在使用 @Html.HiddenFor(mode => mode.CultureId) 这种行为的原因可能是什么 谢谢如果您可以使用数据注释,您应该查看此 } 它可以帮助您在数据库端设置没有模型的验证。

我有一个带有属性“CultureId”的模型类“Country”,该属性未按要求标记。另一个类“CountryViewModel”拥有相同的属性“CultureId”

在呈现“Create”视图时,我注意到验证数据属性被添加到了“CultureId”文本框中,尽管没有添加任何数据注释

我正在使用

@Html.HiddenFor(mode => mode.CultureId)
这种行为的原因可能是什么


谢谢

如果您可以使用数据注释,您应该查看此

}


它可以帮助您在数据库端设置没有模型的验证。

我猜您的CultureId是一个int。MVC会自动将必需的标记添加到不可为null的值类型中

要关闭此选项,请添加

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 
要启动应用程序或使整型为空,请尝试以下操作:

ModelState["CultureId"].Errors.Clear();

if (ModelState.IsValid)     
    {
         .....
    }

如果CultureId为int,那么它也将为您提供所需的结果…

有几种方法可以处理此问题 a) 。将属性设置为可为null,如

public int? Age  { get; set; }
b) 。在控制器类中使用以下命令-

ModelState["Age"].Errors.Clear();

c) 。添加到启动-
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes=false

他的问题不是如何设置属性的required,而是如何避免遇到不需要的html验证。此外,您管理属性的方式是动态数据的典型方式,而不是MVC通常的工作方式。我认为,如果元数据类为空,那么它将覆盖验证规则。如果添加了元数据类,并且仍然是相同的行为。我将尝试使int为空。谢谢你的回答。它可以消除所需的
数据
验证,但是由于Id是
int
它添加了
数据val编号
,在尝试创建时仍然阻止表单提交。我可以通过设置默认值(如0)来解决这个问题,但我不必这样做。我的缺点是,对于隐藏的输入,验证似乎跳过了
数据值编号
。这有点混乱,可以避免这里涉及的真正问题。请参阅。选项(b)是否解决客户端验证行为?不对,因为你正在清除回发邮件上的错误?
ModelState["Age"].Errors.Clear();