【问题标题】:Set UpdateTargetId dynamically or change UpdateTargetId动态设置 UpdateTargetId 或更改 UpdateTargetId
【发布时间】:2013-01-13 10:51:47
【问题描述】:

我知道我在哪里使用:-

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

谢谢

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    如果此属性的值仅在客户端已知,您可以在 OnSuccess 回调中执行此操作。因此,从 AjaxOptions 中删除 UpdateTargetId 属性,然后在 editPrivilegeLevelForFileSuccess 处理程序中手动更新相应部分:

    function editPrivilegeLevelForFileSuccess(result) {
        var fileId = $('#FileId').val();
        $('#divFile-' + fileId).html(result);
    }
    

    【讨论】:

    • 真棒人.....你真是个天才。 :)。从过去的 3 个小时开始,我一直在挠头。非常感谢。
    【解决方案2】:

    好吧,如果你看看表单标签是如何从 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();" }
    

    【讨论】:

    • 最简单的解决方案。我也这样做了:)
    猜你喜欢
    • 2015-01-01
    • 2012-05-07
    • 1970-01-01
    • 2014-03-10
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多