我将变量定义为
public class EditModel
{
[Remote("IsNameAvailable", "Home", ErrorMessage = "Name is in use.")]
[Display(Name = "Name")]
public string Name{ get; set; }
}
以及在家庭控制器中
public JsonResult IsNameAvailable(string name)
{
if (duplicate)
return Json(false, JsonRequestBehavior.AllowGet);
else
return Json(true, JsonRequestBehavior.AllowGet);
}
但当我在Save操作中检查ModelState.IsValid时,它总是返回true,即使我可以在View上看到错误消息显示。
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接口,并在那里重新进行验证。MVC开箱即用地支持这些接口,您的ModelState将反映这一点。
你的另一个选项是创建你自己的从RemoteAttribute派生的属性。在这个自定义属性中,添加用于在服务器端应用相同验证的逻辑。
最后一个选择是我会选择的,但这确实需要更多的时间。不过这个问题应该对你有所帮助。