首页 新闻 会员 周边 捐助

关于ASP.NET MVC中TryUpdateModel使用

0
悬赏园豆:5 [已解决问题] 解决于 2018-02-05 17:50

Model

public class People
    {
        [Required]
        public string name { get; set; }
        [Required]
        public string phone { get; set; }
        [Required]
        public string address { get; set; }
    }

Web页面

 

在点击提交按钮的时候进入UpdatePeople方法

[HttpPost]
        public ActionResult UpdatePeople(FormCollection form)
        {
            People people = new People();
            if (TryUpdateModel<People>(people))
            {
                //更新数据库操作
            }
            else
            {
                //该怎么判断哪些值出错了
                //比如说name没有值,是使用var error= ModelState["name"].Errors[0]这样的方式一个个进行判断吗?
                //如果窗体上值很多,会不会很麻烦
 
            }
            return View();
        }

如上else中注释所示,当if中条件不满足时,else中如何取得错误信息?

fulfilfu的主页 fulfilfu | 初学一级 | 园豆:187
提问于:2018-02-05 10:19
< >
分享
最佳答案
1

参考 How to find the exceptions / errors when TryUpdateModel fails to update model in asp.net mvc 3

var model = new ViewModel();
var isSuccess = TryUpdateModel(model);

 if (!isSuccess)
 {
     foreach (var modelState in ModelState.Values)
     {
        foreach (var error in modelState.Errors)
        {
           Debug.WriteLine(error.ErrorMessage);
        }
     }
 }
收获园豆:5
dudu | 高人七级 |园豆:30778 | 2018-02-05 13:23
其他回答(1)
0

 既然都是提供的集合,还不能有办法 —— 这就是计算机的特长。

源码已经说明不用写。

class ModelStateDictionary{

public bool IsValid
{
get
{
return this.Values.All<ModelState>((Func<ModelState, bool>) (modelState => modelState.Errors.Count == 0));
}
}

}

花飘水流兮 | 园豆:13615 (专家六级) | 2018-02-05 10:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册