【问题标题】:How to append Ajax.ActionLink using jQuery?如何使用 jQuery 附加 Ajax.ActionLink?
【发布时间】:2011-04-29 09:21:41
【问题描述】:

我正忙于一个 ASP.NET MVC 3 站点。应该有一个包含链接列表的视图。该列表将使用 jQuery 填充(或构建)。

现在,以前它只是通过在一些 javascript 函数中说(在一个单独的 javascript 文件中)来工作:

$(ul#Items).append(<li><a href=...>...</a></li>);

对于数组中的每一项。

但是现在对系统的更改使得有必要利用 Ajax.ActionLink 提供的功能。但是,如果我尝试像上面那样附加 ,它实际上会将其附加为文本而不是 html (即在页面上它显示

有什么建议为什么会发生这种情况以及如何使它起作用?

谢谢 D

【问题讨论】:

    标签: jquery ajax asp.net-mvc-3


    【解决方案1】:

    以下是否有效:

    $('ul#Items').append('<li><%= Ajax.ActionLink("Hello", "foo", new AjaxOptions {  }) %></li>');
    

    当然,如果您使用的是 Razor 视图引擎:

    $('ul#Items').append('<li>@Ajax.ActionLink("Hello", "foo", new AjaxOptions {  })</li>');
    

    不要忘记,在 ASP.NET MVC 3 中,默认情况下,所有 Ajax.* 助手都使用 jQuery,因此您可能需要包含 jquery.unobtrusive-ajax.js 才能使链接正常工作。

    这是我个人所说的,我不会使用 Ajax.* 助手。以下是我的做法:

    $('ul#Items').append(
        $('<li/>', {
            html: $('<a/>', {
                href: '@Url.Action("someAction", "someController")',
                text: 'hello world',
                click: function () {
                    $.get(this.href, function (result) {
                        alert('ajax success');
                    });
                    return false;
                }
            })
        })
    );
    

    更新:

    我没有注意到您在单独的 javascript 文件中声明。这就解释了。您不能在静态文件中使用服务器端标签。

    【讨论】:

    • Nope :( 仅识别 li 部分。
    • 问题说明“在一个单独的 javascript 文件中”,所以我想这就是为什么
    • 有没有办法让它工作,即使它在一个单独的 js 文件中?将 js 放在单独的文件中而不是视图中是团队在其项目中使用的强制性约定。
    • @Dieter,您可以在单独的 javascript 文件中执行此操作,您可能只需要在主视图中构建 url,可能将其存储为全局 javascript 变量或 HTML5 数据-*某些 DOM 元素的属性。
    猜你喜欢
    • 2011-07-31
    • 2018-07-04
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多