0

全部。MVC 或多或少是新手,所以不确定如何处理这个问题。

我有从数据库表(大约 100 列)生成的数据模型。申请表分为 6-7 个视图。第一个视图创建一条新记录并将其插入数据库。其余视图假设从表单中收集信息并更新创建的记录。

    [HttpPost]
    public ActionResult GeneralInfo(ADP.Models.ADPRegistration _registration)
    {
        try
        {

            ADP.Models.IS_WEBEntities _test = new IS_WEBEntities();
            _test.ADPRegistrations.Attach(_registration);
            _test.ObjectStateManager.ChangeObjectState(_registration, System.Data.EntityState.Modified);
            _test.SaveChanges();

            return View("ReferralMethod",_registration);

        }

        catch(Exception er)
        {
            return View();
        }
    }

这是更新我的表的通用代码,它在所有视图中都是相似的。将模型传回视图的原因是为了跨视图保留 ID。

我遇到的问题是,我的实体 _registration 包含所有表字段,因此当发布视图时,仅更新视图中的字段,之前的列正在获取 NULL,因为它们在我的视图中不存在猜测。我似乎也无法枚举数据库优先模型。

4

1 回答 1

0

您是正确的,当 MVC 在 POSTback 中重构您的模型时,任何不在表单中的字段在您的模型中都将为 NULL。

您的选择是包括隐藏在视图中的字段:

@Html.HiddenFor(model => model.SomeValue)

或在发布后更新模型,但在将其传递给您的验证和存储库层之前:

ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));
于 2013-01-31T17:42:40.587 回答