现场验证部分工作

时间:2015-10-23 18:56:39

标签: html asp.net-mvc

我有一个ASP.Net MVC表单,需要“名称”。

<input type="text" id="Name" value="" class="form-control" tabindex="1" placeholder="insert client name" name="Name" required/>

所以,使用Chrome,Safari,Firefox,IE它不会让我提交没有名字,太棒了!

enter image description here

但是我注意到我的用户能够(找到一种方法)提交表单而不进行验证。

在我的控制器上,我甚至设置了一个特定警报让我知道

[HttpPost]
        [Authorize]
        public ActionResult New(ViewModels.Client client)
        {
...
 if (string.IsNullOrEmpty(client.Name))
            {
                throw new Exception("Client does not have a name ");
            }
}

我缺少什么,用户\浏览器如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我要做的是进入你的ViewModels.Client类并添加:

    using System.ComponentModel.DataAnnotations;

然后,您可以在.Name属性上添加验证,如下所示:

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

然后在New Method中,您应该检查ModelState.IsValid,如:

    if (ModelState.IsValid)
    {
      //Save the data
    }

还有问题,您是否在提出异常之前执行“保存”,并且用户是否可以提交看起来像空格的不可打印字符?

答案 1 :(得分:0)

客户端无法禁用服务器端验证。我能识别的唯一问题是你只验证输入是null还是空。

您还应该检查输入是否只是空格(“”),我相信这是问题所在。