在.Net中禁用@ Html.TextBoxFor中的验证

时间:2011-12-21 05:59:32

标签: .net asp.net-mvc asp.net-mvc-3

我正在使用ASP.Net MVC 3。我有一个名为Student的实体,其属性为Id,Name,Age,RollNo。在Student的创建页面中,我使用了验证框架。但是在高级搜索页面中,我使用了所有属性但不想使用验证框架,因为用户可能不想使用所有字段进行搜索。

我还想提一下,我在模型类中使用了[Required]注释。

请帮助我克服这个问题。

此致 Molay

5 个答案:

答案 0 :(得分:16)

我同意xixonia,使用单独的View模型进行搜索但是为了回答你的问题,你有一些选择客户端:

  1. data-val = "false"作为HTML属性传递,例如:@Html.TextBoxFor(x => x.Age, new { data_val = "false" });
  2. 使用@Html.TextBox()代替
  3. 使用相同的输入名称使用HTML手动创建文本框,以便绑定到模型
  4. 如果您正在后端进行验证(您应该!),即检查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)

我认为你必须编写自己的文本框助手。没有办法禁用它。