我有以下型号:
class Identity
{
public string Name { get; set; }
public string Surname { get; set; }
}
class Person
{
public Identity Identity { get; set; }
}
现在我想在我的控制器中为姓氏添加验证模型错误:
[HttpPost]
public ActionResult CreatePerson(Person person)
{
// some validation stuff
ModelState.AddModelError("Identity.Surname", "Surname has not been found in BBDD");
^^^^^^^^^^^^^^^^
}
如何在Identity
对象中引用姓氏以在我的视图中正确显示验证错误?
我在视图中显示验证错误:
@Html.ValidationMessageFor(model => model.Identity.Surname)
但错误显示在一般验证摘要中。
答案 0 :(得分:1)
您可以尝试在您的Surname属性中实现Remote
属性。它允许您使用ajax在客户端执行验证,以检查服务器上的任何内容。这是documentation。
class Identity
{
public string Name { get; set; }
[Remote("CheckSurname", "Validation")]
public string Surname { get; set; }
}
public class ValidationController : Controller {
public JsonResult CheckSurname(string Surname) {
if(/*your busines logic*/) {
return Json(true, JsonRequestBehavior.AllowGet);
}
else {
return Json("Your error message here", JsonRequestBehavior.AllowGet);
}
}
}
在web.config中你应该启用它:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>