我有2个动作,一个用于GET,另一个用于处理POST请求。
虽然我在客户端进行了验证,但我也在服务器端检查了一些内容(在我的操作方法中)。
在POST操作中,当我发现要报告回UI的错误等时,我有什么选择将消息/错误发送回客户端?
我正在使用流行的jQuery验证插件als。
答案 0 :(得分:1)
我正在使用从View到Post Action的模型绑定,它内置了可用于此的验证。
但有些人更喜欢在模型之外进行验证。要将这些错误返回给View,您需要更新ModelState,然后正常检查它是否有效(包含错误):
public Dictionary<string, string> ValidateEntry(Object obj)
{
var errors = new Dictionary<string, string>();
if (string.IsNullOrEmpty(obj.Owner))
{
errors.Add("Owner", "You must select Owned By.");
}
//... whatever else
return errors;
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Object cap)
{
var errors = ValidateEntry(cap);
if (errors.Count > 0)
{
foreach (var err in errors)
{
ModelState.AddModelError(err.Key, err.Value);
}
}
if (ModelState.IsValid)
{
//... do if valid
}
return View(ViewModel);
}
答案 1 :(得分:1)
我在Web应用程序/网站中实施验证时遇到的一些规则:
遵循这些规则我使用以下解决方案:
令人惊讶的是它的易用性和使用效果。它透明地使用JQuery验证插件,并以最少的编码完成它应该做的事情。
您视图中的客户端验证包括:
<%= Html.ClientSideValidation<Foo>() %>
您的操作中的服务器端验证包含
ModelState.IsValid