我有一个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>
显示更新成功或失败我是否需要在成功方法中更新更改列表?请建议
答案 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)
}