我更改了控制器中的模型值,但视图接收到具有旧值的模型

时间:2014-10-06 21:54:14

标签: c# asp.net-mvc

我有这个动作:

//Edit
[HttpPost]
public ActionResult InvoiceType(clsInvoiceType Model, string Stade)
{
    Model.Stade = Stade== "1" ? true : false;
    return PartialView(Model);
}

在此操作中,我尝试更改Model.Stade的值并返回模型,但视图始终接收发送到此操作的值,问题是我尝试在动作中更改模型的值并将新模型值返回到视图,但视图接收原始模型值,因此我的更改不起作用,问题是什么?

如何更改原始模型值并将其发送到视图?

2 个答案:

答案 0 :(得分:1)

ModelState对象包含已发布回操作方法的值。在查看模型中的实际值之前,视图中的Html.*For()辅助方法始终会从ModelState中提取值。如果要更改值,则需要从ModelState中删除已发布的值。

[HttpPost]
public ActionResult InvoiceType(clsInvoiceType Model, string Stade)
{
    this.ModelState.Remove("Stade");  // or .Clear() to remove all keys
    Model.Stade = Stade== "1" ? true : false;
    return PartialView(Model);
}

答案 1 :(得分:0)

您可以通过以下方式禁用缓存:

[OutputCache(Duration=0, VaryByParam="none")]
[HttpPost]
public ActionResult InvoiceType(clsInvoiceType Model, string Stade)
{
    Model.Stade = Stade== "1" ? true : false;
    return PartialView(Model);
}