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在创建视图时自动生成字段,并复制所需字段,然后根据需要将其中一些字段隐藏起来这不是答案。看起来您正在尝试注释。