我将变量定义为
public class EditModel
{
[Remote("IsNameAvailable", "Home", ErrorMessage = "Name is in use.")]
[Display(Name = "Name")]
public string Name{ get; set; }
}
在主 Controller 中
public JsonResult IsNameAvailable(string name)
{
if (duplicate)
return Json(false, JsonRequestBehavior.AllowGet);
else
return Json(true, JsonRequestBehavior.AllowGet);
}
但是当我在“保存”操作中检查 ModelState.IsValid 时,即使我可以在 View 上看到错误消息显示,它也始终返回 true。
public ActionResult Save(EditModel editModel)
{
if (!ModelState.IsValid)
{
//Return to view and display error in view
return View("Home", editModel);
}
//Input data is valid and save record
Repository.Save(editModel.Name);
}
ModelState 如何检查模型中 RemoteAttribure 的验证规则?
最佳答案
你有两个选择。您可以实现 IDataErrorInfo 或 IValidatableObject 接口(interface)并在那里重做验证。这些接口(interface)由 MVC 开箱即用地支持,您的 ModelState 将反射(reflect)这一点。
您的另一个选择是创建您自己的从 RemoteAttribute 派生的属性。在此自定义属性中,添加用于在服务器端应用相同验证的逻辑。
最后一个选项是我想要的,但这确实花费了更多时间。 This question不过应该可以帮助你。
关于asp.net-mvc-3 - ASP.MVC3 ModelState.IsValid 不包括 RemoteAttribute 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077469/