【问题标题】:How to format a URL.Action() call in JQuery to set a link's href attribute?如何在 JQuery 中格式化 URL.Action() 调用以设置链接的 href 属性?
【发布时间】:2011-09-15 21:29:45
【问题描述】:

我需要将链接的 href 属性设置为指向特定图像,该图像将数据库中的 id 设置为标题。但是,我在尝试格式化字符串以包含获取图像标题属性的调用时遇到问题。

这是基本字符串:

$("#favoriteLink").hover(function() {
    $(this).attr("href", '<%: Url.Action("FavoriteWallpaper", "Wallpaper", new{wallpaperId='+$(this).children.attr("title")+'}) %>');
});

favoriteLink 是一个 div,而孩子只是一个图像。

【问题讨论】:

    标签: javascript jquery asp.net-mvc-2 escaping url.action


    【解决方案1】:

    哦,不,您不能像尝试那样混合服务器端代码和 javascript。这个怎么样:

    $('#favoriteLink').hover(function() {
        var title = $(this).children.attr('title');
        $(this).attr('href', function() {
            var url = '<%= Url.Action("FavoriteWallpaper", "Wallpaper", new { wallpaperId= "_TITLE_TO_REPLACE_"}) %>';
            return this.href.replace('_TITLE_TO_REPLACE_', title);
        });
    });
    

    【讨论】:

    • 我现在有一个新问题。我需要一种方法来检查墙纸是否已被收藏,以便在用户将鼠标悬停在图像上时知道要显示哪个图像,黑色星形或黄色星形。我能想到的最简单的方法是使用字典,图像的 id 作为键,布尔值表示最喜欢的状态。但是,由于图像的 id 被设置为标题,我不知道我将如何获得正确的值。
    【解决方案2】:

    您是 URL。Action 呈现在服务器端,而您的 javascript 客户端呈现。当您尝试构建链接时,您将无法访问 dom 元素。

    您应该获取在 URL.Action 中呈现的实际 URL 并在客户端构建字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-15
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      相关资源
      最近更新 更多