2

我不确定我的问题是否正确命名,但问题是:

我有一个部署在多个虚拟目录中的 MVC.NET 应用程序。之所以会这样,是因为我们在 QA 的各个阶段都有不同的版本。

问题在于,在一个站点中,.js 引用用于

/虚拟目录/scripts/file.js

在另一个网站上

/其他虚拟目录/scripts/file.js

这个问题的另一个方面是我有创建链接的 HtmlHelpers。问题是我在 HtmlHelper 方法中没有 UrlHelper。将 UrlHelper 从视图传递到 HtmlHelper 是否“可以”?我可以用它来生成标签吗?

有没有其他人不得不处理这些问题?有什么建议么?

谢谢

戴夫

4

3 回答 3

1

FileResult您可能会考虑创建控制器来为封装路径的静态内容(css、js 等)返回's。

于 2010-02-09T13:54:53.300 回答
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 太棒了!

于 2010-02-10T16:24:08.003 回答
1

在 MVC 中从视图中引用文件时,我总是使用它

<script src="<%= Url.Content ("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>

由于视图引用与请求它们的资源相关,因此如果您需要 .JS 文件中的“相对”路径,则在母版页中使用这段 Javascript 会有所帮助。

<script type="text/javascript">var imgRoot = '<% = Page.ResolveUrl("~/Images/") %>';</script>

最后,CSS 工作得很好,因为 CSS 中的所有路径都是相对于 .css 文件的位置。

于 2010-02-10T16:28:19.233 回答