发布后查看不更新

Cap*_*in0 35 c# http-post asp.net-mvc-3

我有一个控制器方法CreateOrUpdate,这个方法应该将汽车保存到数据库然后正常返回.

public ActionResult CreateOrUpdate(int ID = 0)
{
    Car car = new Car(ID);
} 

[HttpPost]
public ActionResult CreateOrUpdate(Car car)
{
       car.Save();
       return View(car);
}
Run Code Online (Sandbox Code Playgroud)

在theCar.Save()方法中,我设置了汽车的id,在汽车保存后,无论数据库中的id是什么(当我使用SCOPE_IDENTITY()进行插入时,save方法运行良好,如果我在调用Save()之后调试并观察汽车的值,id是正确的.但是当渲染View时,视图中的ID为0.

谁能帮助我,告诉我为什么会这样.我不想在HTTP POST方法中更改视图的模型吗?如果保存成功,我应该重定向到原始的CreateOrUpdate()方法.

小智 65

它应该是ModelState问题.如果你使用Htmlhelper来显示id值.默认HtmlHelper显示ModelState值而不是Model.尝试在视图中显示模型值

<td>
    @Model.id
</td>
Run Code Online (Sandbox Code Playgroud)

或清理控制器中的ModelState值

ModelState.Clear();
Run Code Online (Sandbox Code Playgroud)

或者在SaveChange之后重置id值.

theCar.Save();
ModelState["id"].Value = theCar.id
return View(theCar);
Run Code Online (Sandbox Code Playgroud)

表单提交后重置textarea的值

  • 以我的拙见,mvc 中的可怕错误 (4认同)