全。或多或少是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,因为我猜视图中不存在这些字段。我似乎也无法通过数据库优先模型进行枚举。
发布于 2013-02-01 01:42:41
你是正确的,当MVC在POSTback中重组你的模型时,任何不在表单中的字段在你的模型中都将为空。
您的选择是在视图中包含隐藏的字段:
@Html.HiddenFor(model => model.SomeValue)或者在post之后更新模型,但在将其传递到验证和存储库层之前:
ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));https://stackoverflow.com/questions/14630868
复制相似问题