繁体   English   中英

MVC中的现场验证

[英]Field Validations in MVC

我想在我正在使用的MVC应用程序中的视图上强制执行字段验证。 例如 -

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

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

<div>
<%= Html.TextBoxFor(c => c.CompanyName, new { style = "width:300px", maxlength = "40" })%></div>

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

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

        [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

只需查看数据注释,然后进行一些模型验证

编辑:

您的控制器动作将需要类似

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; }
}

并将您的视图绑定到该模型。 这样,您将同时具有服务器端和客户端验证。 真的很简单。

@model Company

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

    <input type="submit" value="Save" />
}

哦,此示例使用Razor(MVC3),据我所知,MVC2的工作原理几乎相同。

然后只需通过检查ModelState.IsValid验证控制器中传入的ViewModel。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM