发布后查看不更新

时间:2012-03-10 09:48:09

标签: c# asp.net-mvc-3 http-post

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

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

[HttpPost]
public ActionResult CreateOrUpdate(Car car)
{
       car.Save();
       return View(car);
}

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

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

3 个答案:

答案 0 :(得分:60)

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

<td>
    @Model.id
</td>
控制器中的

或Clean ModelState值

ModelState.Clear();

或在SaveChange之后重置id值。

theCar.Save();
ModelState["id"].Value = theCar.id
return View(theCar);

Reset the value of textarea after form submission

答案 1 :(得分:17)

答案 2 :(得分:2)

我不想清除ModelState,因为我需要显示错误,所以我选择了

ValueProviderResult vpr = new ValueProviderResult("", null, System.Globalization.CultureInfo.CurrentCulture);

ModelState["id"].Value = vpr;