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