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