我有以下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
控制器不同的内容?
提前致谢!