1

我的模型;

namespace GeneralUtility.Models
{
  public class MyModel
  {
    public int BirthDateYear { get; set; } 
    public String Details { get; set; }
  }
}

我的控制器

namespace GeneralUtility.Controllers
{
  public class WorkspaceController : Controller
  {
     public ActionResult MyHelper(MyModel model)
    {
      if(model.someCondition)
         model.Details= "TEST";
      else
         model.Details= "Some other TEST";   

     return View(model);
    }
  }
}

我的观点

<div data-role="fieldcontain">
  @using (Html.BeginForm("MyHelper", "WorkSpace", FormMethod.Post, new { id = "frmMyForm" }))
  {
     ...
     <div data-role="fieldcontain">
       @Html.EditorFor(x => x.Details )
     </div>
     ...
  }
</div>

提交表单后,我可以看到模型以及我在 MyHelper 操作方法中所做的任何更改。但是,当我进行更改并从控制器返回模型时(我可以在调试时看到模型中的更改)。@Html.EditorFor(x => x.Details )我在字段中得到与以前相同的值。我该怎么做才能让模型的更改后的详细信息值显示?

4

1 回答 1

2

这是因为默认情况下 ASP.NET MVC 返回传递给方法的模型(使用存储在 . 中的内容ModelState,如果存在的话)。如果它不存在,它将使用您传递给视图的内容。

为了防止这种情况,您需要ModelState.Clear()在返回视图之前调用。

查看此博客文章以获取更详细的说明。

于 2013-09-27T12:34:57.077 回答