2012-01-04 68 views
1

我有一个C#.Net MVC3网络应用程序。在一定的js文件我加载一个对话框,并指定加载:属性下面的图片MVC3 JavaScript图像问题

loading: $('<img src="../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'), 

然而,在不同的环境中,没有找到图像。在这些情况中的代码应该是

loading: $('<img src="../../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'), 

我试图

loading: $('<img src="@Href("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'), 

而且还试图

loading: $('<img src="@Url.Content("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'), 

但是都没有成功....当我使用@ Url.Content和@在aspx文件中的Href,它的工作原理。不用说,我不是一个javaScript专家,但我认为这必须在js文件中可以执行。

任何想法?

+0

的@ url.Content应该工作。你用萤火虫调试过吗? – 2012-01-04 15:14:37

+0

你能展示一些更多的代码吗?它不清楚你想要做什么。 – jrummell 2012-01-04 15:15:45

+2

您不能在JS文件中使用.NET代码,因为它不是由.NET处理的。 – 2012-01-04 15:16:27

回答

4

的方式,我通常在此得到的是通过你的主人或页面布局创建一个辅助功能:

将这个在你的布局页面下面的jQuery的引用,但高于任何其他文件,将使用它:

// This adds the helper onto the jQuery object rather than just being global 
$.getUrl = function (path) { 
    return '@Url.Content("~")' + path; 
}; 

然后在你的js文件中使用这样的:

$('<img src="' + $.getUrl('/Content/Images/loading.gif') + '" />') 
+0

@RichardD ...我会试试看,谢谢 – MikeTWebb 2012-01-04 16:41:23

+0

@All ...我选择了这个,因为它符合我的代码风格 – MikeTWebb 2012-01-04 21:52:30

2

由于理查德D说你不能在JavaScript文件中运行.NET代码。可能的解决方法是将图像路径存储在视图中的隐藏字段中,然后从javascript文件中获取它。

查看文件:

<input type="hidden" id="image-path" value="@Url.Content("~/Content/Images/loading.gif")" /> 

JS文件:

var imagePath = $("#image-path").val(); 
loading: $('<img src="' + imagePath + '" alt="loading" class="ui-loading-icon">'), 
+0

和RichardD ...谢谢。这就是我的想法。我会尝试上述想法并让你知道它是如何发展的。谢谢! – MikeTWebb 2012-01-04 15:32:04