动态设置UpdateTargetId或更改UpdateTargetId

时间:2013-01-13 10:51:47

标签: asp.net-mvc-3

我有一个观点,我正在使用: -

@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中设置相同的值?

谢谢

2 个答案:

答案 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();" }