我有一个观点,我正在使用: -
@using (Ajax.BeginForm("Edit", "Files", new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divFile-" + Model.FileId,
OnSuccess = "editPrivilegeLevelForFileSuccess",
OnFailure = "editPrivilegeLevelForFileFailure"
}))
@Html.HiddenFor(model => model.FileId)
这里的问题是UpdateTargetId: -
我的模型目前没有FileId值。 我通过jquery方法设置隐藏字段的值,它运行良好。
$("#FileId").val(fileId);
但是如何在UpdateTargetId中设置相同的值?
谢谢
答案 0 :(得分:1)
如果仅在客户端知道此属性的值,则可以在OnSuccess回调中执行此操作。因此,从AjaxOptions中删除UpdateTargetId
属性,然后在editPrivilegeLevelForFileSuccess
处理程序中,您可以手动更新相应的部分:
function editPrivilegeLevelForFileSuccess(result) {
var fileId = $('#FileId').val();
$('#divFile-' + fileId).html(result);
}
答案 1 :(得分:1)
好吧,如果您看一下如何从Ajax.BeginForm生成表单标记:
<form id="form0" action="/Redirects/Manage/List" method="post" novalidate="novalidate" data-ajax-update="#page" data-ajax-mode="replace" data-ajax="true">
您可以使用jquery来改变这种情况,例如在下拉列表的OnChange事件中:
@Html.DropDownList("language", new SelectList(@Model.Locales, "Key", "Value"), new { onchange = "$(this.form).attr('data-ajax-update','#nowhere');$(this.form).submit();" }