2013-02-10 202 views
9

我是新的.NET MVC。提交後更新局部視圖Ajax.Beginform

在視圖 「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」 清議節省模式到數據庫,然後重定向到控制器操作,從數據庫中檢索所有「事物」並呈現整個「Displaythings」視圖。

我的問題是:當我按其中一個submitbuttons(每個「東西」我有一個submitbutton列表)。我只想要部分視圖重新加載/反映我的變化。我不想重新加載整個「Displaythings」視圖。我該怎麼做呢?如果我只是返回一個局部視圖,我會失去其他所有部分,除了那個局部視圖

如果這是一個不好的方法,請給我指示。

更新:

我仍然在做一些錯誤的,因爲我得到了一個新的頁面渲染的局部視圖。我的控制器:

public ActionResult Afunc(ThingModel thingmodel) 
{ 
    // do 

    return PartialView("DisplayPartial", thingmodel); 
} 

我一直在使用UpdateTargetId和的onSuccess都具有相同的結果(新頁)

回答

12

在你的只是現在正在爲new AjaxOptionsAjaxOptions嘗試,你可以使用指定目標元素UpdateTargetId屬性:

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

以上,以每一個 「東西」 唯一ID的容器爲代表,<div id="unique_thing_id">。這將被請求的repsonse取代。更改Afunc以僅呈現特定的「事物」部分。

+3

我會接受你的回答,因爲你指出了我缺少的東西。然而,這只是我錯過的兩件事之一。一個常見的問題是忘記(在瀏覽網頁後)將其添加到佈局頁面中: Andreas 2013-02-10 19:54:41

+0

@manojlds我開了一個新的問題,請你看看[這個](http://stackoverflow.com/questions/30868493/form-reload-but-partialview-cannot-with-ajax-in -mvc?noredirect = 1#comment49779357_30868493)問題? – 2015-06-16 14:26:15