【问题标题】:Can I pass a Javascript variable in an @Ajax.Actionlink in asp.net-mvc 3?我可以在 asp.net-mvc 3 的 @Ajax.Actionlink 中传递 Javascript 变量吗?
【发布时间】:2012-05-20 04:23:08
【问题描述】:

我有以下 Javascript 代码:

var idJS;

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

然后我想这样做:

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

可以这样做吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    好的,我会查一下,只有javascript:

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

    【讨论】:

      【解决方案2】:

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

      您可以做的是使用 jQuery 更改链接的 id。有了更多的信息,我将能够提供更多帮助,但是使用 jQuery 更改属性是一件简单的事情。

      我会将 id 设置为硬编码,例如“ajaxBtn”之类的,然后,在您的点击中,即使是 .disp,也可以将数据属性更改为您需要的属性。但是,如果没有更多数据,我无法确定您需要设置 id 的确切原因。

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        相关资源
        最近更新 更多