我不确定我的问题是否正确,但这是问题:
我有一个部署在多个虚拟目录的MVC.NET应用程序。原因是因为我们在质量保证的各个阶段都有不同的版本。
问题在于,在一个站点中,.js引用是针对
的/ VirtualDir /scripts/file.js
在另一个网站上
/ OtherVirtualDir /scripts/file.js
这个问题的另一个方面是我有HtmlHelpers创建链接。这个问题是我在HtmlHelper方法中没有UrlHelper。将UrlHelper从视图传递到HtmlHelper是否“没问题”?我可以通过这个来生成标签吗?
还有其他人不得不处理这类问题吗?有什么建议吗?
由于
戴夫
答案 0 :(得分:1)
您可以考虑创建控制器以返回封装路径的静态内容(css,js等)的FileResult
。
答案 1 :(得分:1)
好的,最终结果证明解决方案是:
<%= Html.JavaScriptTag("siteFunctions.js")%>
<%= Html.MyCSS("Site.css")%>
<%= Html.MyImage("loading_large.gif") %>
以上第一个例子的以下定义
public static string JavaScriptTag(this HtmlHelper htmlHelper, string fileName)
{
TagBuilder js = new TagBuilder("script");
string path = VirtualPathUtility.ToAbsolute("~/Scripts/" + fileName);
js.MergeAttribute("src", path);
js.MergeAttribute("type", "text/javascript");
return js.ToString();
}
这些HtmlHelper太棒了!
答案 2 :(得分:1)
当从MVC中的View中引用文件时,我总是使用这个
<script src="<%= Url.Content ("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>
由于View引用与请求它们的资源相关,因此如果您需要在.JS文件中使用“相对”路径,则在母版页中使用此位Javascript可能会有所帮助。
<script type="text/javascript">var imgRoot = '<% = Page.ResolveUrl("~/Images/") %>';</script>
最后,CSS工作正常,因为CSS中的所有路径都相对于.css文件的位置。