2011-11-21 107 views
0

我有一個asp.net視圖,它有兩個部分視圖。一個用於編輯信息,另一個用於顯示所做更改的列表。當我點擊更新按鈕時,列表不會更新。我用ajax.begin表單。我怎樣才能做到這一點?列表不刷新mvc 3視圖

主要觀點有這樣的:

<div class="accountdetails1"> 
    @Html.Action("UpdateAccountDetails", new { dispute = dispute }) 
    </div> 

    <div> 
    list of changes 
    @Html.Action("GetAccountAudit") 

    </div> 

updateAccountDetails is like this in start: 

@using (Ajax.BeginForm("UpdateAccountDetails", new AjaxOptions 
{ 
    LoadingElementId = "loading", 
    LoadingElementDuration = 2000, 
    OnSuccess = "OnSuccess", 
    OnBegin = "OnBegin", 
})) 
{ 

and functions are like this: 

<script type="text/javascript"> 
    function OnSuccess() { 
     var div = $('#dvMessage'); 
     div.html(''); 
     div.append('Account Information has been updated.'); 
    } 

    function OnBegin() { 
     var div = $('#dvMessage'); 
     div.html(''); 
    } 
</script> 

顯示更新的成功或失敗,我需要更新的成功方法改變列表?請建議

+0

你有dvMessage的ID的DIV? – Dallas

+0

是的。它顯示消息但不是列表,它是成功的消息。 @ Html.Action(「GetAccountAudit」)不在此dvMessage中 – DotnetSparrow

+0

@ Html.Action(...)不是局部視圖。它實際上會向您的服務器發出額外的請求。 – Dismissile

回答

0

@Ajax方法在工作方式如下:

@ Ajax.ActionLink - 從通過AJAX並提出針對性的措施要求HTML導致HTML元素的ID等於在AjaxOptions指定UpdateTargetId值。 (Ajax.BeginForm()){..}並將其提交給指定的動作(使用AJAX),然後將響應放到HTML元素的id中在AjaxOptions.UpdateTargetId屬性中指定。

所以,你需要像

<div id="myContainer" > 
@using(Ajax.BeginForm("yourActionToProcessEdits", new AjaxOptions { UpdateTargetId = "myContainer" })) 
{ 
.. Form for edit information 
@Html.EditorFor(m => m.EditMe) 
... 

<input type="submit" value="Update" /> 

.. Display changes here 
@Html.Raw(Model.MyChanges) 

} 
0

您需要請求GetAccountAudit操作來返回列表。 beginform只是請求UpdateAccountDetails操作。

您可以在onSuccess函數中執行jquery ajax請求來請求GetAccountAudit操作並更新html。

這兩個操作可以合併,以便該列表將在UpdateAccountDetails視圖中返回?

+0

請提供任何示例鏈接或代碼示例。我是MVC新手jQuery jQuery ajax – DotnetSparrow

+0

是的,我可以合併 – DotnetSparrow