在没有帮助程序的情况下使asp.net mvc验证工作

时间:2013-07-25 22:58:20

标签: asp.net-mvc html-helper unobtrusive-validation

有人可以提供一个很好的教程,说明如何以不引人注目的方式验证我的html字段, 但没有使用MVC助手。 它有可能吗?

我想保留简单的html并使用input type="text"字段而不是mvc helpers <%= Html.TextBox("Name") %>,但仍然使用模型验证..

public class Employee
{
    [Required]
    public string Name { get; set; }
}

还可以使用jquery Ajax吗?

由于

1 个答案:

答案 0 :(得分:1)

虽然可以在不使用帮助程序的情况下在MVC中执行不显眼的验证,但作为开发人员,在不使用mvc帮助程序的情况下手动执行此操作将非常痛苦。严格说来,它会破坏你的表现并使你的代码不可读。

基本上,不显眼的验证包括两部分:服务器端,通过数据属性到模型字段和MVC助手,它们生成必要的标记,以及客户端库, jquery.validate.unobtrusive.js ,将这些标记解析为jquery validate plugin的有意义部分。

因此,通常,您可以手动编写必要的标记,只要加载验证js库,验证就可以工作。例如,作为验证主题的字段必须使用data-val ='true'属性进行标记。如果你想要你的字段,你应该写一些类似data-val-required =“error message”的东西。对于长度验证 - data-val-length-min =“5”(显然,最小)data-val-length-max =“50”(最大长度),data-val-length =“Min 5 max 50 chars required”

然而,当使用普通的mvc方法时,它只是模型属性的问题:

[Required]
[StringLength(50, MinimumLength = 5)]
public string Name { get; set; }

和标记中的一行代码:

@Html.TextBoxFor(o=>o.Name)

漂亮,有光泽,将视图和模型分开,并帮助KISS。

问题的第二部分。如果我正确理解您的问题,您需要验证动态表单。可能会回答: jquery.validate.unobtrusive not working with dynamic injected elements