我可以在asp.net-mvc 3中的@ Ajax.Actionlink中传递一个Javascript变量吗?

时间:2012-05-11 14:44:11

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

我有以下Javascript代码:

var idJS;

$('.disp').click(function () { 
    idJS = $(this).attr("id");   
})

然后我想这样做:

@Ajax.ActionLink("myMethod", "myMethod", "HomeController", new { id = idJS },
  new AjaxOptions() { HttpMethod = "Get", UpdateTargetId = "myDiv" })

是否可以这样做?

2 个答案:

答案 0 :(得分:5)

这是不可能的,因为Razor视图代码是在加载页面时呈现的,所以在javascript甚至可以执行之前,所有代码都被解析(转换为HTML)。

然而,您可以使用Javascript来更改链接的属性,例如以下内容(使用JQuery但我担心,如果需要,请查找等效的javascript)

$("a").attr("href", "/Home/myMethod/" + idJS);

好的,我会查一查,仅限javascript:

document.getElementById("link").href = "/Home/myMethod/" + idJS;

答案 1 :(得分:1)

没有。服务器端和客户端是两个非常不同的东西。服务器端甚至在到达客户端之前呈现。当$(document).ready()被触发时,服务器就完成了。

您可以做的是使用jQuery更改链接的ID。通过更多信息,我可以提供更多帮助,但使用jQuery更改属性是一件简单的事情。

我会将id设置为硬编码,例如“ajaxBtn”或其他内容,然后,在您的点击中甚至为.disp,将数据属性更改为您需要的数据属性。但是,如果没有更多数据,我无法确切知道您为什么需要设置ID。