在@Html.TextBoxFor.Net中禁用验证
我正在使用ASP.NETMVC3。我有一个名为Student的实体,它的属性Id、名称、年龄和编号。在Student的创建页面中,我使用了验证框架。但在高级搜索页面中,我使用了所有属性,但不想使用验证框架,因为用户可能不想使用所有字段进行搜索 我还想提到,我在模型类中使用了[Required]注释 请帮助我克服这个问题 问候在@Html.TextBoxFor.Net中禁用验证,.net,asp.net-mvc,asp.net-mvc-3,.net,Asp.net Mvc,Asp.net Mvc 3,我正在使用ASP.NETMVC3。我有一个名为Student的实体,它的属性Id、名称、年龄和编号。在Student的创建页面中,我使用了验证框架。但在高级搜索页面中,我使用了所有属性,但不想使用验证框架,因为用户可能不想使用所有字段进行搜索 我还想提到,我在模型类中使用了[Required]注释 请帮助我克服这个问题 问候 Molay您不能在运行时删除属性。学生实体必须有多个视图模型,一个用于创建,另一个用于搜索。听起来学生类的值受到了限制(应该是这样的) 我会考虑使用单独的视图模型来搜索,而
Molay您不能在运行时删除属性。学生实体必须有多个视图模型,一个用于创建,另一个用于搜索。听起来学生类的值受到了限制(应该是这样的) 我会考虑使用单独的视图模型来搜索,而不是使用学生。
public class Student
{
[ValidationAttributeOfSomeKind]
int Age { get; set; }
[ValidationAttributeOfSomeKind]
string Name { get; set; }
}
public class StudentSearch
{
int? Age { get; set; }
string Name { get; set; }
}
我认为你必须编写自己的文本框助手。没有办法禁用此功能。我同意xixonia的观点,使用单独的视图模型进行搜索,但要回答您的问题,您有几个选项客户端:
data val=“false”
,例如:@HTML.TextBoxFor(x=>x.Age,new{data\u val=“false”})代码>
@Html.TextBox()
如果您在后端执行验证(应该是!),即检查
ModelState.IsValid
,则必须从ModelState中删除验证属性,如下所示:ModelState.remove(“年龄”)代码>在表单上添加此代码:
@Html.EnableClientValidation(false);
是否改用Html.TextBox
?你将失去其他的好处,<代码>文本BOXX/<代码>带来,但它们并不难硬编码。当你感觉到这一点时,你会考虑为这个搜索页面或任何其他自定义页面考虑VIEW模型。毕竟,ViewModels始终是一种最佳实践。我没有想过要这么做!:)