【问题标题】:Use a variable that store image path in Razor Url.Content使用在 Razor Url.Content 中存储图像路径的变量
【发布时间】:2026-01-26 00:00:01
【问题描述】:

我使用一个函数来动态构造一个图像路径是这样的:

  function () {
            var name = $(this).attr('id') + '_o';
            var newsrc = '../../Content/HomePage/' + name + '.png';

我想将使用 Razor Url.Content 的 newsrc 分配给图像标签作为其来源。所以,我想做这样的事情:

  $(this).attr('src', '@Url.Content(newsrc)');

但是 VS 向我显示红线表示 newsrc 在当前上下文中不存在.. 如何将变量与 Url.Content 一起使用?

(注意:我在脚本标签内使用这个...)

编辑:我想到了一个想法,也许后门会将 newsrc 传递给控制器​​,在那里使用 Url.Content 来解析 url 并将其传回?可行吗?

任何帮助将不胜感激..

【问题讨论】:

    标签: jquery asp.net-mvc-3 razor urlhelper


    【解决方案1】:

    当我使用这种技术将路径发送到 JavaScript 变量时,它会显示 -1 而不是路径。代码如下。

    var path= <%= ConfigurationManager.AppSettings["FileManager"] %>;
    

    【讨论】:

      【解决方案2】:

      您正试图将 javascript 变量直接传递给 Asp.Net 代码 - 这是不可能的。

      您必须删除 @Url.Content() 并在您的 javascript 中使用相对路径:

      $(this).attr('src', newsrc);
      

      或者,使用Url.Content() 获取文件夹位置,并在javascript 中附加文件名,如下所示:

      var name = $(this).attr('id') + '_o';
      var newsrcFolder = '@Url.Content('../../Content/HomePage/')';
      var newsrc = newsrcFolder + name + '.png';
      $(this).attr('src', newsrc);
      

      【讨论】:

      • 我无法删除 @Url.Content() 因为相对路径在部署中不起作用。我试过你的第二个建议是在主页之后的“/”处显示语法错误......
      【解决方案3】:

      我的前辈解决了问题。我在 web.config(一个 WebDirectory)中创建了一个额外的 appsettings,然后将该值分配为文件夹路径。

      然后,在我的代码中,我可以使用以下方法轻松构建我的 url:

       System.Configuration.ConfigurationManager.AppSettings["WebDirectory"].ToString()...
      

      在这里分享我的解决方案,希望它对将来的人有所帮助。谢谢。

      【讨论】: