我遇到了以下问题:https://github.com/aspnet/Mvc/issues/4989,并根据2016年9月12日的'rsheptolut'评论,他发现了这种解决方法(为方便起见粘贴):
我的问题是LINQ获取errors
变量.我想通过属性的名称过滤这些,因此我的文件uploads元素下列出的错误列表将不包含页面上其他元素的错误.我想做这样的事情:
ViewData.ModelState.Values.Where(item => item.Key == "Images").Select...;
但是,LINQ找不到Key作为ModelStateEntry类的有效属性.很公平.但是,为什么在添加快速监视时ViewData.ModelState.Values
,Key属性会出现?
假设你想要错误的错误 Name
string propertyName = "Name";
要获得第一个错误(使用时将显示的内容@Html.ValidationSummary()
,您可以使用
string error = ViewData.ModelState.Keys.Where(k => k == propertyName) .Select(k => ModelState[k].Errors[0].ErrorMessage).First();
或获取财产的所有错误
IEnumerableerrors = ModelState.Keys.Where(k => k == propertyName) .Select(k => ModelState[k].Errors).First().Select(e => e.ErrorMessage);
并使用您foreach
在问题中提到的