列表未在mvc 3视图中刷新

时间:2011-11-21 17:30:40

标签: asp.net-mvc asp.net-mvc-3 jquery

我有一个asp.net视图,它有两个部分视图。一个用于编辑信息,另一个用于显示所做的更改列表。当我点击更新按钮时,列表不会更新。我使用了ajax.begin表单。我怎么能这样做?

主视图有这样的:

   <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>

显示更新成功或失败我是否需要在成功方法中更新更改列表?请建议

2 个答案:

答案 0 :(得分:0)

您需要请求GetAccountAudit操作才能返回列表。 beginform仅请求UpdateAccountDetails操作。

您可以在onSuccess函数中执行jquery ajax请求,以请求GetAccountAudit操作并更新html。

可以合并这两个动作,以便在UpdateAccountDetails视图中返回列表吗?

答案 1 :(得分:0)

@Ajax方法以下列方式工作:

@ Ajax.ActionLink - 通过AJAX从尖头动作请求HTML,并将结果放入HTML元素,其id等于AjaxOptions中指定的UpdateTargetId值。

@ Ajax.BeginForm - 使用(Ajax.BeginForm()){..}获取所有输入并选择和其他表单元素并将其提交到指定的操作(使用AJAX)然后将响应放入指定了id的HTML元素在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)

}