我的模特;
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 )
字段中获得与以前相同的值。如何才能显示要显示的模型的更改的“详细信息”值?
答案 0 :(得分:2)
这是因为默认情况下,ASP.NET MVC返回传递给方法的模型(使用ModelState
中存储的内容(如果存在))。如果它不存在,它将使用您传递给View的内容。
为了防止这种情况发生,您需要在返回视图之前致电ModelState.Clear()
。
查看this blog post以获取更详细的说明。