加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – ASP.MVC3 ModelState.IsValid不包括RemoteAttr

发布时间:2020-12-16 03:21:24 所属栏目:asp.Net 来源:网络整理
导读:我将变量定义为 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 (dupli
我将变量定义为

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.在此自定义属性中,添加用于应用相同验证服务器端的逻辑.

最后一个选项是我想要的选项,但这需要花费更多时间. This question应该可以帮助你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读