【问题标题】:PartialViews display not updated modelPartialViews 显示未更新的模型
【发布时间】:2013-09-08 12:03:00
【问题描述】:

我在使用 ASP.NET MVC3 (Razor) 和 Ajax 时遇到了 PartialViews 的问题。 这是我的情况:
我有简单的测试视图模型:

public class MyModel
{
    public string MyText { get; set; }
    public int MyNumber { get; set; }
}

我的目标是有一个表格。根据发布的数据,我想显示不同的部分视图。 我创建了主窗体(索引视图):

@using (Ajax.BeginForm("Index", "Test", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "testdiv" }))
{
    <div id="testdiv">


        @Html.Partial("Cat")

    </div>
    <input type="submit" value="Go" />
}

我创建了两个不同的局部视图,它们应该在发布主表单时显示(取决于发布的数据): 猫视图:

<span>cat view</span>
@Html.TextBoxFor(m=> m.MyText)
@Html.TextBoxFor(m=> m.MyNumber)
<span>@DateTime.Now.Second</span>

狗观:

<span>dog view</span>
@Html.TextBoxFor(m=> m.MyText)
@Html.TextBoxFor(m=> m.MyNumber)
<span>@DateTime.Now.Second</span>

我的控制器包含四个动作:

[HttpGet]
public ActionResult Index()
{
    MyModel model = new MyModel();
    return View(model);
}


[HttpPost]
public PartialViewResult Index(MyModel model)
{
    if (model.MyNumber == 1)
    {
        return Cat(model);
    }
    else
    {
        return Dog(model);
    }
}

[HttpPost]
public PartialViewResult Cat(MyModel model)
{
    model.MyText = model.MyText + " K";
    return PartialView("Cat", model);
}

[HttpPost]
public PartialViewResult Dog(MyModel model)
{
    model.MyText = model.MyText + " P";
    return PartialView("Dog", model);
}

我的问题是,当执行 Cat 或 Dog 动作时,模型中的 MyText 发生了变化,但是当显示正确的局部视图时,我看到旧的(未更新的)MyText。为什么? 欢迎任何其他想法如何根据表单中发布的数据显示特定的局部视图。

【问题讨论】:

    标签: c# asp.net-mvc-4 asp.net-ajax asp.net-mvc-partialview


    【解决方案1】:

    我刷新我的部分视图略有不同。我会在单击按钮时使用 ajax 调用,而不是回发并传递您想要返回的部分视图

    $('.btnSubmit').on('click', function(){
        $.ajax({
            url: "@(Url.Action("Action", "Controller"))",
            type: "POST",
            cache: false,
            async: true,
            data: { type: 'cat/dog' },
            success: function(result){
                $('.Content').html(result);
            }
        });
    });
    

    希望这对你有用。

    【讨论】:

    • 我使用它作为 jQuery ajax 方式与您相同,但存在问题。这是关于添加或删除的项目的更新,但不是针对仅在内容中更改的项目。我不知道为什么。这让我很困惑。 :(你可以在stackoverflow.com/questions/23033242/…看到我的问题@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2020-11-14
    • 2013-04-04
    • 2014-03-06
    相关资源
    最近更新 更多