Omu*_*Omu 109 c# asp.net-mvc modelstate
我在哪里可以找到使ModelState无效的错误列表?我没有在ModelState对象上看到任何错误属性.
bas*_*ijn 245
由于您可能正在使用Visual Studio进行编程,因此您最好利用断点进行如此简单的调试步骤(了解问题所在的情况).只需将它们放在前面/位于检查ModelState.isValid并将鼠标悬停在ModelState上的位置即可.现在,您可以轻松浏览内部的所有值,并查看导致isvalid返回false的错误.

que*_*en3 43
关于"可以是0错误和IsValid == false":这是来自https://github.com/Microsoft/referencesource/blob/master/System.Web/ModelBinding/ModelStateDictionary.cs#L37-L41的MVC源代码
public bool IsValid {
get {
return Values.All(modelState => modelState.Errors.Count == 0);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,它看起来不可能.那就是ASP.NET MVC v1.
Kri*_*hna 23
将以下代码粘贴到控制器的ActionResult中,然后将调试器放在此处.
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
Run Code Online (Sandbox Code Playgroud)
Mic*_*l G 22
bool hasErrors = ViewData.ModelState.Values.Any(x => x.Errors.Count > 1);
Run Code Online (Sandbox Code Playgroud)
或者迭代
foreach (ModelState state in ViewData.ModelState.Values.Where(x => x.Errors.Count > 0))
{
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ved 13
有时,绑定器会抛出一个没有错误消息的异常.您可以使用以下代码段检索异常,以找出错误的内容:
(通常如果活页夹试图将字符串转换为复杂类型等)
if (!ModelState.IsValid)
{
var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
// Breakpoint, Log or examine the list with Exceptions.
}
Run Code Online (Sandbox Code Playgroud)
如果删除对ModelsState.IsValid的检查并让它出错,那么如果您复制此行((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors并将其粘贴到Visual Studio的watch部分中,它将提供确切的错误信息。节省大量时间检查错误在哪里。
| 归档时间: |
|
| 查看次数: |
130770 次 |
| 最近记录: |