【问题标题】:Update partial view after submit Ajax.Beginform提交 Ajax.Beginform 后更新部分视图
【发布时间】:2013-01-25 21:59:10
【问题描述】:

我是 .NET mvc 的新手。

在“DisplayThings”视图中,我有类似的内容:

@foreach (var thing in Model)
{
    @Html.Partial("DisplayPartial", thing)
}

在局部视图“DisplayPartial”中我有

@using (Ajax.BeginForm("Afunc", new AjaxOptions ()))
{
    @Html.EditorFor(model => model.AstringThing)
    @Html.EditorFor(model => model.AintThing)

    <input type="submit" name="submit" value="Ajax Post" />
}

此时“Afunc”-Action 将模型保存到数据库,然后重定向到控制器操作以从数据库中检索所有“事物”并呈现整个“显示事物”视图。

我的问题是:当我按下其中一个提交按钮时(列表中的每个“事物”都有一个提交按钮)。我只想重新加载/反映我的更改的部分视图。我不想重新加载整个“Displaythings”视图。我该怎么做呢?如果我只返回一个局部视图,我会丢失除该局部视图之外的所有内容。

如果这是一个不好的方法,请给我指示。

更新:

当我在新页面中呈现部分视图时,我仍然做错了。我的控制器:

public ActionResult Afunc(ThingModel thingmodel)
{
    // do

    return PartialView("DisplayPartial", thingmodel);
}

我尝试过使用 UpdateTargetId 和 onsuccess 都得到相同的结果(新页面)

【问题讨论】:

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


    【解决方案1】:

    在您现在简单地作为new AjaxOptions 传递的AjaxOptions 中,您可以使用UpdateTargetId 属性指定目标元素:

    <div id="unique_thing_id">
    @using (Ajax.BeginForm("Afunc", new AjaxOptions { UpdateTargetId = 'unique_thing_id' }))
    {    
    }
    </div>
    

    在上面,每个“事物”都有唯一 id 的容器用&lt;div id="unique_thing_id"&gt; 表示。这将被请求的响应所取代。更改 Afunc 以仅呈现特定的“事物”部分。

    【讨论】:

    • 我会接受你的回答,因为你指出了我遗漏的东西。然而,这只是我错过的两件事之一。一个常见的问题是忘记(在网上冲浪后)将其添加到您的布局页面:
    • @manojlds 我开了一个新问题,你能看看this问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多