MVC中的字段validation

我想在我正在处理的MVC应用程序中对我的视图执行字段validation。 例如 –

  • 将字段长度限制为40
  • 确保只有字母数字和特殊字符@#$%&*()-_ +] [‘;:?。,! 可以输入。

我使用以下来限制字段长度:

c.CompanyName, new { style = "width:300px", maxlength = "40" })%>

如何确保只能在文本框中输入字母数字和特殊字符?

编辑:我将模型中的属性更改为

  [DataMember(EmitDefaultValue = false)] [Required(ErrorMessage="CompanyName is Required")] [StringLength(40, ErrorMessage = "Must be under 40 characters")] public string CompanyName { get; set; } 

为了测试,我尝试保存一个空白的CompanyName,希望得到服务器错误,因为它是必需的。 但是,它会保存空白的公司名称。 可能遗漏的任何想法?

这是MVC 2.0,但也适用于3.0 http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

只需查看数据注释,并进行一些模型validation

编辑:

你的控制器动作需要类似的东西

 if(ModelState.IsValid) { //success logic } //failure logic //return to view 

你也需要

 @Html.ErrorMessageFor(model => model.YourProperty) 

为了查看抛出的错误消息。

阅读文章它可以更好地解释这个,然后其他任何人都会。

只需像这样创建一个ViewModel对象:

 class Company { [Required] [StringLength(40)] [RegularExpression(@"someregexhere")] public string CompanyName { get; set; } } 

并将View绑定到该模型。 通过这种方式,您将同时具有服务器端和客户端validation。 这真的很容易。

 @model Company @using (Html.BeginForm()) { Html.EditorFor(x => x.CompanyName)  } 

哦,这个例子使用Razor(MVC3),据我所知,顺便说一下MVC2的工作方式几乎相同。

然后通过检查ModelState.IsValid来validation控制器中的传入ViewModel。