使用在Razor Url.Content中存储图像路径的变量

时间:2011-12-07 09:15:25

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

我使用了一个函数来动态构建一个图像路径:

  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来解析网址并将其传回去?这可行吗?

任何帮助将不胜感激..

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您正在尝试直接将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);

答案 2 :(得分:0)

我的大四学生解决了问题。我在web.config(WebDirectory)中创建了一个额外的appsettings,然后将值指定为文件夹路径。

然后,在我的代码中,我可以使用:

轻松构建我的URL
 System.Configuration.ConfigurationManager.AppSettings["WebDirectory"].ToString()...

在这里分享我的解决方案,希望它将来会帮助别人。感谢。