如何使用jQuery追加Ajax.ActionLink?

时间:2011-04-29 09:21:42

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

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

现在,之前它只是在一些javascript函数中说(在一个单独的javascript文件中):

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

表示数组中的每个项目。

但是现在对系统的更改使得有必要利用Ajax.ActionLink提供的功能。但是,如果我尝试追加&lt;%:Ajax.ActionLink ...%&gt;如上所述,它实际上将其作为文本而不是html附加(即在页面上显示&lt;%:Ajax.ActionLink ...&lt;%&gt;

的列表

为什么会发生这种情况以及如何使其发挥作用的任何建议?

由于 d

1 个答案:

答案 0 :(得分: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文件中声明过。这解释了它。您不能在静态文件中使用服务器端标记。