2

您好我有一个方法在我的控制器输入的数据没有错误,并具有以下代码我的ModelState始终是无效的,即使有由用户

if (ModelState.IsValid) 

{ 

    IDataOperations ops = DataSession.GetDataOperations(null); 
    List<Department> dept = new List<Department>(); 
    ops.Load(dept); 
    ops.Commit(); 
    int deptId = dept[dept.Count - 1].Id + 1; 
    Department department = new Department() 
    { 
     Id = deptId, 
     CompanyId = deptModel.CompanyId, 
     Active = deptModel.Active, 
     Name = deptModel.Name 
    }; 

    ops.Create(department); 
    ops.Commit(); 
    return RedirectToAction("CompanyDepartment", "Task"); 
} 

else 

{ 
    //some code 

页面运行每次它总是去其他部分,意思是模型状态是无效的。 如何检查页面中的错误位置,可以添加哪些代码以显示页面错误的位置。

谢谢

回答

0

上次我有这样的问题,这是因为什么是不应该是null。

将断点在你的代码上,你说行:

if (modelState.IsValid) 

你可以找到其中的部分代码通过下钻到ModelState中有错误。你应该可以从那里解决它。

1

很可能问题出在您的模型中未显示在视图中的字段中。如果您正在执行验证,请在页面上输入验证摘要。 (指定不应忽略字段级别的错误。)这将显示所有错误,包括那些不属于可见字段的错误。

3

你可以通过下面的代码,通过debbuging通过这个,你会看到,你的代码将进入for循环,你可以理解,错误是什么。

#if DEBUG 
     /// <summary> 
/// Output the properties which are causing the issues when 
/// the model is binding. 
/// </summary> 
    public static void ModelStateErrors (ModelStateDictionary modelState) 
     { 
      var errors = modelState.Where(a => a.Value.Errors.Count > 0) 
       .Select(b => new { b.Key, b.Value.Errors }) 
       .ToArray(); 

      foreach (var modelStateErrors in errors) 
      { 
       System.Diagnostics.Debug.WriteLine("...Errored When Binding.",         modelStateErrors.Key.ToString()); 

      } 

     } 
#endif 
0

通过执行以下操作,您可以检查错误的位置。

var errors = ModelState.Values.SelectMany(v => v.Errors); 
     if (ModelState.IsValid) 
     { 

     } 
0

Please see this image向下钻取模型状态 1)选择值 2)深入每个成员,并查找错误

请找图像链接,看看 @RBT

+0

这不是一个答案。看起来你正在评论。 – RBT 2017-01-04 06:55:28

-3

时自动生成的场创建视图并复制必需的字段,然后将其中的一些隐藏起来,只要你想要

相关问题