我想在不知道键值的情况下获得modelState中的所有错误消息。循环获取ModelState包含的所有错误消息。
我该怎么做呢?
我想在不知道键值的情况下获得modelState中的所有错误消息。循环获取ModelState包含的所有错误消息。
我该怎么做呢?
当前回答
这个代码片段也很有用,它为您提供了一个包含错误消息的列表。
var errors = ModelState.Values。SelectMany(x => x. errors。Select(c => c. errormessage)).ToList();
其他回答
foreach (ModelState modelState in ViewData.ModelState.Values) {
foreach (ModelError error in modelState.Errors) {
DoSomethingWith(error);
}
}
请参见如何在ASP中获取模型状态错误的集合。净MVC ?。
<div class=“textdanger”样式=“direction:rtl”asp-validation-summary=“All”></div>
简单地使用asp-validation-summary标签助手
var result = string.Join(',',ModelState.Values。SelectMany(v => . errors).Select(a=> . errormessage));
用于将错误消息数组传递给View,可能通过Json:
messageArray = this.ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors, (modelState, error) => error.ErrorMessage).ToArray();
在调试过程中,我发现在每个页面的底部放置一个表来显示所有ModelState错误是很有用的。
<table class="model-state">
@foreach (var item in ViewContext.ViewData.ModelState)
{
if (item.Value.Errors.Any())
{
<tr>
<td><b>@item.Key</b></td>
<td>@((item.Value == null || item.Value.Value == null) ? "<null>" : item.Value.Value.RawValue)</td>
<td>@(string.Join("; ", item.Value.Errors.Select(x => x.ErrorMessage)))</td>
</tr>
}
}
</table>
<style>
table.model-state
{
border-color: #600;
border-width: 0 0 1px 1px;
border-style: solid;
border-collapse: collapse;
font-size: .8em;
font-family: arial;
}
table.model-state td
{
border-color: #600;
border-width: 1px 1px 0 0;
border-style: solid;
margin: 0;
padding: .25em .75em;
background-color: #FFC;
}
</style>