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

asp.net-mvc – ASP.NET MVC AjaxForm没有正确更新部分视图

发布时间:2020-12-16 06:33:25 所属栏目:asp.Net 来源:网络整理
导读:我不确定我做错了什么.我以前从来没有遇到过这个问题,也许我曾经有过这个问题,但我从来没有注意过.我有一个局部视图的页面.提交页面时,将检查模型以查看其是否具有ID.如果是,则更新记录.如果没有,它会创建一个新的.很标准.完成后,模型将返回到视图.我似乎遇
我不确定我做错了什么.我以前从来没有遇到过这个问题,也许我曾经有过这个问题,但我从来没有注意过.我有一个局部视图的页面.提交页面时,将检查模型以查看其是否具有ID.如果是,则更新记录.如果没有,它会创建一个新的.很标准.完成后,模型将返回到视图.我似乎遇到的问题是它没有更新模型的任何更改.它与发布的模型相同.好的,这里有一些代码.我创建了一个全新的项目,它仍然无法正常工作.

此外,我使用Firebug查看返回的原始数据,它仍然是相同的模型.

这是控制器:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Test()
{
    return this.View(new Test());
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestDetailPost(Test testin)
{
    Test test = new Test();
    test.Id = "1";
    test.Name = "Guy";

    return this.PartialView("TestDetail",test);
}

这是“测试”视图:

@model WebAppTest.Models.Test
@using (Ajax.BeginForm("TestDetailPost",new AjaxOptions { HttpMethod = "POST",UpdateTargetId = "TestDetail" }))
{
    <p><input type="submit"/></p>
    <div id="TestDetail">
        @{ Html.RenderPartial("TestDetail",Model); }
    </div>
}

这是“测试详细信息”视图:

@model WebAppTest.Models.Test
<p>@Html.TextBoxFor(a => a.Id)</p>
<p>@Html.TextBoxFor(a => a.Name)</p>

而型号:

public class Test
{
    public string Id { get; set; }

    public string Name { get; set; }
}

所以我发现如果我从TestDetailPost动作中删除“Test testin”,它将返回我创建的模型.如果我不这样做,它只返回发布的相同模型.当然,我没有进行任何数据库保存或任何事情,上面的代码只是为了弄清楚为什么会发生这种情况.

这是我正在使用的细节:

MVC5
jQuery 1.11.1
jquery.unobtrusive阿贾克斯

我已使用NuGet将所有文件更新到最新版本.

解决方法

调用ModelState.Clear();在你的行动方法如下:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestDetailPost(Test testin)
{
   ModelState.Clear();
   Test test = new Test();
   test.Id = "1";
   test.Name = "Guy";

   return this.PartialView("TestDetail",test);
}

我在my answer here中提供了更多细节.我希望这会有所帮助.

(编辑:李大同)

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

    推荐文章
      热点阅读