Ajax.BeginForm - OnSuccess重新加载页面的不同区域

时间:2017-01-27 12:35:46

标签: javascript c# .net ajax ajax.beginform

我有以下Ajax.BeginForm() PartialView发布到控制器。该表单用于将商店的新位置添加到链中。我可以很好地写入数据库,并OnSuccess() Ajax.BeginForm()方法按预期调用标准警报。

PartialView: -

@using (Ajax.BeginForm("Edit", "Stores", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "refresh-panel", OnSuccess = "alert('success')", InsertionMode=InsertionMode.Replace })) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(false)
    // Form components here
}

我想要做的是重新加载位于同一页面上的不同的部分视图(即商店列表),从而显示新添加的商店。理想情况下,我希望不刷新页面并更新该面板。要更新的面板周围有一个“刷新面板”ID,所以: -

<div id="refresh-panel">
    @Html.Partial("_StoresList", Model)
</div>

我尝试从HttpPost控制器操作结束时返回PartialView("_BrandList");,但它只是用白屏替换上面<div>内的列表。获取商店列表的控制器操作永远不会被调用,但OnSuccess()仍然会调用。

有趣的是,作为调试方法,我添加了以下内容: -

@Ajax.ActionLink("My test button", "_GetStores", "Stores", new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "refresh-panel", OnComplete = "BrandLocationsList()" })

会像我期望的那样刷新商店列表。

有人可以建议如何重新加载商店列表吗?通过OnSuccess()函数的JavaScript GET?或者通过返回与HttpPost控制器不同的内容?

提前致谢!

0 个答案:

没有答案