全部。或多或少是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,因为它们不存在于我的猜测。我似乎无法通过数据库第一个模型进行枚举。
答案 0 :(得分:0)
你是正确的,因为当MVC在POSTback中重构你的模型时,模型中没有的任何字段在模型中都是NULL。
您的选择是将视野中隐藏的字段包括在内:
@Html.HiddenFor(model => model.SomeValue)
或者在发布后更新模型,但在将其传递给验证之前存储库层:
ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));