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

asp.net-mvc – 在TryUpdateModel之前更新值提供程序

发布时间:2020-12-16 09:58:40 所属栏目:asp.Net 来源:网络整理
导读:假设我们有一个名为PetsName的类.如果它在屏幕上留空,我想更新值提供者,所以如果用户没有输入宠物名称,我们强制“未命名”.这不是实际情况..这当然是一个示例,所以像“只是在网页上设置默认值等”的答案将不适合这种情况:) 主要问题是我们想要更新值,因此当
假设我们有一个名为PetsName的类.如果它在屏幕上留空,我想更新值提供者,所以如果用户没有输入宠物名称,我们强制“未命名”.这不是实际情况..这当然是一个示例,所以像“只是在网页上设置默认值等”的答案将不适合这种情况:)

主要问题是我们想要更新值,因此当您更新模型时,它将使用您覆盖的任何内容.我想一个想法是删除值并添加它.当我检查ModelState时,它确实具有更新的值,但是当我调用TryUpdateModel时,该值不会更新.它可能我在下面做的确实是正确的,这里还有另一个问题,但我想我先试试这个.谢谢!

//Sample case:

    [HttpPost]
    public ActionResult Edit(PetOwner petOwner)
    {

    //If pets name is not set,force to "Unknown"
    if(petOwner.PetsName=="")
    {
    //Tried this too ModelState.Remove("PetsName");
    //ModelState.Add("PetsName",new ModelState());
    ModelState["PetsName"].Value = new ValueProviderResult("Unnamed","Unnamed",CultureInfo.CurrentCulture);
    }

    //Get the record/relationships from DB to merge with ModelState
    PetOwner petOwnerToSave = from o in ctx.PetOwners where o.PetOwnerId == petOwner.PetOwnerId select o;

    TryUpdateModel(petOwnerToSave);

    //Save petOwnerToSave
    }

解决方法

这里幕后的真正问题是Html.HiddenFor没有显示正确的值,即使TryUpdateModel正在更新模型中的值以提供给视图.

这里的问题是Html助手假设你在帖子之后渲染一个视图,一定是错误的(否则你会用GET方法重定向回到视图 – 因此Post Redirect Get问题)

这在以下详细描述:
http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

(编辑:李大同)

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

    推荐文章
      热点阅读