我在MVC 3项目中的观点有一个奇怪的问题.我有一个标准的数据编辑视图(使用模板创建).当我提交表单时,我更改了Name属性,但是当我从控制器返回浏览器后,我仍然看到了lorem值.为什么?
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Name)
<input type="submit" value="Save" />
}
public ViewResult EditUserData(int id)
{
[...]
UserData model = new UserData();
model.Name = "lorem";
return View("~/Views/UserDetails.cshtml", model);
}
[HttpPost]
public ViewResult EditUserData(UserData model)
{
model.Name = "ipsum";
return View("~/Views/UserDetails.cshtml", model);
}
public class ControlUserData
{
[...]
[Required]
[Display(ResourceType = typeof(Resources), Name = "UserNameFirst")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ModelState如果要在post/get中修改它,则需要删除该值:
[HttpPost]
public ViewResult EditUserData(UserData model)
{
ModelState.Remove("Name");
model.Name = "ipsum";
return View("~/Views/UserDetails.cshtml", model);
}
Run Code Online (Sandbox Code Playgroud)
这是内置的MVC行为:所有人都Html.Helpers更喜欢ModelState集合中的值而不是实际的模型值.
这里有一篇很好的文章:ASP.NET MVC Postbacks和HtmlHelper Controls忽略模型更改.
| 归档时间: |
|
| 查看次数: |
11524 次 |
| 最近记录: |