我有一个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它不会让我提交没有名字,太棒了!
但是我注意到我的用户能够(找到一种方法)提交表单而不进行验证。
在我的控制器上,我甚至设置了一个特定警报让我知道
[HttpPost]
[Authorize]
public ActionResult New(ViewModels.Client client)
{
...
if (string.IsNullOrEmpty(client.Name))
{
throw new Exception("Client does not have a name ");
}
}
我缺少什么,用户\浏览器如何解决这个问题?
答案 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还是空。
您还应该检查输入是否只是空格(“”),我相信这是问题所在。