0

我有以下一对用于编辑的控制器方法。

初始调用没有问题,并且正确显示了来自两个子/导航对象的模型和属性(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 以测试服务器端验证是否也有效)

4

1 回答 1

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);
        }

    }

希望能帮助到你。

于 2013-01-08T12:23:43.007 回答