加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – MVC 3在提交模型后,View不会刷新

发布时间:2020-12-16 03:34:21 所属栏目:asp.Net 来源:网络整理
导读:我在MVC 3项目中的观点有一个奇怪的问题.我有一个标准的数据编辑视图(使用模板创建).当我提交表单时,我更改了Name属性,但是当我从控制器返回浏览器后,我仍然看到了lorem值.为什么? @using (Html.BeginForm()) { @Html.EditorFor(model = model.Name) input
我在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; }
}

解决方法

如果要在post / get中修改它,则需要从ModelState中删除该值:

[HttpPost]
public ViewResult EditUserData(UserData model)
{
    ModelState.Remove("Name");
    model.Name = "ipsum";
    return View("~/Views/UserDetails.cshtml",model);    
}

这是内置的MVC行为:所有Html.Helpers都优先于ModelState集合中的值而不是实际的模型值.

这里有一篇很好的文章:ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读