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)
Cap*_*in0 18
我添加ModelState.Clear()到我的HttpPost控制器方法,如本文所示,Html帮助程序从模型状态获取数据,而不是从模型中获取,如果您在表单发布后返回相同的视图.要在视图中获取更新数据,请使用post redirect get pattern或ModelState.Clear()
来解决问题.
谢谢
| 归档时间: |
|
| 查看次数: |
35861 次 |
| 最近记录: |