如何使用jquery在asp.net中正确地为url标记?

时间:2014-06-04 11:09:33

标签: c# jquery asp.net .net

我在.net应用程序中编写了jquery

Function UploadComplete(sender, args) {
        var filename = args.get_fileName();
        var contentType = args.get_contentType();
        var folder = "~/Uploads/";
        var text = "Size of " + filename + " is " + args.get_length() + " bytes";
        if (contentType.length > 0) {
            text += "and content type is '" + contentType + "'.";
            text += "<a href='" + folder + filename + "'" + filename + "</a>";
        }
        document.getElementById('lblStatus').innerText = text;
    }

现在我的问题是我无法准确地在行中提供路径

 text += "<a href='" + folder + filename + "'" + filename + "</a>";

请帮帮我!!!

1 个答案:

答案 0 :(得分:1)

要解决的几个问题:

1)&#34;〜/&#34;

&#34;〜/&#34;作为相对路径是在.Net 中使用服务器端。 Javascript(实际上是您的浏览器)不知道如何处理该URL。

作为一个小技巧,您可以使用此Razor代码@(Url.Content("~/"))注入应用程序根URL ,但这意味着您的功能需要位于剃刀页面而不是单独的JS文件中。

如果您的JS在其他地方&#34;,请使用页面上的小脚本部分将路径注入Javascript变量(例如window.rootUrl = "@(Url.Content("~/"))")。

2)缺少&#39;&gt;&#39;

您在生成的锚中错过了结束>

3)innerHTML,而不是innerText

您需要设置innerHTML属性,否则您将获得原始文本。您可能需要调整输出的格式(换行符或跨度/段落)以使其看起来很漂亮(例如,此时锚点之前没有空格)。

把它们放在一起就可以得到类似的东西:

function UploadComplete(sender, args) {
    var filename = args.get_fileName();
    var contentType = args.get_contentType();
    var folder = '@(Url.Content("~/"))Uploads/';
    var text = 'Size of ' + filename + ' is ' + args.get_length() + ' bytes';
    if (contentType.length > 0) {
        text += 'and content type is "' + contentType + '". ';
        text += '<a href="' + folder + filename + '">' + filename + '</a>';
    }
    document.getElementById('lblStatus').innerHTML = text;
}

正如我在评论中所说,我强烈建议在jQuery / JavaScript中使用单引号作为字符串分隔符,以便任何HTML字符串在属性上都有双引号。

4)jQuery?

您也使用jQuery标记了问题,这会将最后一行缩短为:

    $('#lblStatus').html(text);

对于任何拼写错误道歉,我把这一切都排除在头顶并且没有验证它。