9

我是 .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 都具有相同的结果(新页面)

4

1 回答 1

12

AjaxOptions您现在只是传递的那个中,您可以使用属性new AjaxOptions指定目标元素:UpdateTargetId

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

上面,每个“事物”都具有唯一 id 的容器用 表示<div id="unique_thing_id">。这将替换为请求的响应。更改Afunc为仅渲染特定的“事物”部分。

于 2013-02-10T19:00:25.237 回答