Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 即使用户输入的数据没有错误,My modelstate始终无效_Asp.net Mvc_Asp.net Mvc 3_Telerik Mvc_Asp.net Mvc 3 Areas - Fatal编程技术网

Asp.net mvc 即使用户输入的数据没有错误,My modelstate始终无效

Asp.net mvc 即使用户输入的数据没有错误,My modelstate始终无效,asp.net-mvc,asp.net-mvc-3,telerik-mvc,asp.net-mvc-3-areas,Asp.net Mvc,Asp.net Mvc 3,Telerik Mvc,Asp.net Mvc 3 Areas,嗨,我的控制器中有一个方法,代码如下 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].

嗨,我的控制器中有一个方法,代码如下

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
if(ModelState.IsValid)
{
IDataOperations ops=DataSession.GetDataOperations(null);
列表部门=新列表();
运行负荷(部门);
ops.Commit();
int deptId=dept[dept.Count-1].Id+1;
部门=新部门()
{
Id=deptId,
CompanyId=deptModel.CompanyId,
Active=deptModel.Active,
Name=deptModel.Name
};
创建(部门);
ops.Commit();
返回重定向到操作(“公司部门”、“任务”);
}
其他的
{
//一些代码
每次页面运行时,它总是转到else部分,这意味着模型状态无效。 如何检查页面中的错误位置,可以添加哪些代码来显示页面中的错误位置


谢谢

上次我遇到这样的问题是因为有些东西不应该是空的

将代码中的断点放在您说的行上:

   if (modelState.IsValid)

通过深入到modelState,您可以找到代码的哪个部分有错误。您应该能够从那里解决问题。

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

您可以通过以下代码查看modelstate集合,通过对其进行解包,您将看到,您的代码将进入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
#如果调试
///  
///输出在以下情况下导致问题的属性:
///该模型具有约束力。
/// 
公共静态无效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(“…绑定时出错。”,modelStateErrors.Key.ToString());
}
}
#恩迪夫

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

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

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

请找到图片链接并查看
@RBT

在创建视图时自动生成字段,并复制所需字段,然后根据需要将其中一些字段隐藏起来

这不是答案。看起来您正在尝试注释。