我有以下一对编辑控制器方法。
初始调用没有问题,并正确显示两个子/导航对象的模型和属性(1:1关系)。
当我尝试保存时,如果模型有效则没有问题。
虽然它是无效的,但是在我的视图中我引用了一个引用任何子/导航属性的空引用 - 它们在原始视图中是正确的。
public ActionResult Edit(int id)
{
var reportcustomerlimit = db.ReportCustomerLimits.Single(r => r.Id == id);
return View(reportcustomerlimit);
}
[HttpPost]
public ActionResult Edit(ReportCustomerLimit reportcustomerlimit)
{
if (ModelState.IsValid)
{
db.ReportCustomerLimits.Attach(reportcustomerlimit);
reportcustomerlimit.ReportCustomer.Verified = false;
ReportGenerator.ClearAllReportsZip();
db.ObjectStateManager.ChangeObjectState(reportcustomerlimit, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index", new { id = reportcustomerlimit.CustomerNumber });
}
else
{
//What do I do here?
}
return View(reportcustomerlimit);
}
我错过了什么?
(注意:验证通常在客户端完成,并停止提交表单 - 但我已关闭javascript以测试服务器端验证工作)
答案 0 :(得分:0)
试试这段代码:
[HttpPost]
public ActionResult Edit(ReportCustomerLimit reportcustomerlimit)
{
if (ModelState.IsValid)
{
db.ReportCustomerLimits.Attach(reportcustomerlimit);
reportcustomerlimit.ReportCustomer.Verified = false;
ReportGenerator.ClearAllReportsZip();
db.ObjectStateManager.ChangeObjectState(reportcustomerlimit, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index", new { id = reportcustomerlimit.CustomerNumber });
}
else
{
var reportcustomerlimit = db.ReportCustomerLimits.Single(r => r.Id == id);
return View(reportcustomerlimit);
}
}
希望它有所帮助。