我正在使用ASP.Net MVC 3。我有一个名为Student的实体,其属性为Id,Name,Age,RollNo。在Student的创建页面中,我使用了验证框架。但是在高级搜索页面中,我使用了所有属性但不想使用验证框架,因为用户可能不想使用所有字段进行搜索。
我还想提一下,我在模型类中使用了[Required]注释。
请帮助我克服这个问题。
此致 Molay
答案 0 :(得分:16)
我同意xixonia,使用单独的View模型进行搜索但是为了回答你的问题,你有一些选择客户端:
data-val = "false"
作为HTML属性传递,例如:@Html.TextBoxFor(x => x.Age, new { data_val = "false" });
@Html.TextBox()
代替如果您正在后端进行验证(您应该!),即检查ModelState.IsValid
,那么您将不得不从ModelState中删除验证属性,如下所示:ModelState.Remove("Age");
。< / p>
答案 1 :(得分:3)
在表单上添加以下代码:
@Html.EnableClientValidation(false);
答案 2 :(得分:2)
您无法在运行时删除属性。您必须拥有多个视图模型,供学生实体1用于创建,其他视图模型用于搜索。
答案 3 :(得分:2)
听起来学生班级的价值受到限制(应该是这样)。
我会考虑使用单独的视图模型进行搜索,而不是使用学生。
public class Student
{
[ValidationAttributeOfSomeKind]
int Age { get; set; }
[ValidationAttributeOfSomeKind]
string Name { get; set; }
}
public class StudentSearch
{
int? Age { get; set; }
string Name { get; set; }
}
答案 4 :(得分:1)
我认为你必须编写自己的文本框助手。没有办法禁用它。