【问题标题】:Calling javascript function on OnSuccess callback of Ajax.actionlink?在 Ajax.actionlink 的 OnSuccess 回调上调用 javascript 函数?
【发布时间】:2015-05-28 15:09:44
【问题描述】:

我正在使用 MVC5。我正在使用 Unobtrusive Ajax.ActionLink() 从列表中加载图像。这是示例代码:-

<ul class="list-group list-unstyled lists">
@foreach (var item in Model)
{
<li>
@Ajax.ActionLink(@item.Name,
        @item.Action,
        "Home",
        new {id = @item.Id },
        new AjaxOptions
        {
            UpdateTargetId = "divImage",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "GET",
            OnSuccess = "enableZoom"
        })
</li>
}
</ul>

OnSuccess 回调我调用了一个函数“enableZoom”。只要它在视图页面的脚本标签内,它就可以工作。但是当我将 enableZoom 函数移动到 custom.js 文件时,OnSuccess 回调找不到或调用它。

<script>
    function enableZoom() {
        $("#divImage").zoom({
            on: "grab",
            magnify: "1"
        });
    }
</script>

PS:我的 custom.js 文件正在成功加载(通过 firebug 确认),并且 custom.js 也有其他功能,并且可以正常工作。任何线索/帮助将不胜感激?

【问题讨论】:

  • 我会尝试将函数的名称更改为独特的名称并尝试调用它。 enableZoom 可能在其他地方定义...
  • @HasanSavran:我尝试更改名称,没有帮助。
  • 你是通过主视图/普通视图包含外部js文件,还是通过部分视图?
  • @Mackan:如果我理解正确,我已将 custom.js 添加到 bundleconfig 中
  • js文件中没有

标签: jquery asp.net-mvc-5 unobtrusive-ajax


【解决方案1】:

尝试在单独的 js 文件中使用以下内容。由于您使用的是 Jquery 函数,因此您要确保在 Js 文件之前加载 Jquery。

MyNamespace = {} || MyNamespace();
MyNamespace.EnableZoom = function() {
    $("#divImage").zoom({
            on: "grab",
            magnify: "1"
        });
};

您应该可以通过 MyNamespace.EnableZoom()

调用此函数

OnSuccess = "MyNamespace.EnableZoom"

试一试。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2017-01-28
    • 2019-06-23
    • 1970-01-01
    • 2022-01-03
    • 2011-12-23
    • 2020-08-15
    相关资源
    最近更新 更多