我有一些帮助方法来构建Html输出,但它只在我的本地开发人员而不是我的登台服务器上才能正确显示。 〜不起作用,因为这不是Razor。
我的本地网站路径为http://localhost/testSite
我的登台路径是http://192.168.1.2/
在我的本地生产
的 SRC = “/测试网站/ images.test.jpg”
在我的暂存实例上,它会生成 src =“// images.test.jpg”
var baseUrl = HttpRuntime.AppDomainAppPath;
var tb = new TagBuilder("img");
tb.MergeAttribute("title", "Main Image");
tb.MergeAttribute("src", baseUrl +"\images\test.jpg");
return new MvcHtmlString(tb.ToString(TagRenderMode.SelfClosing));
我确信在代码端有一个内置的方法
答案 0 :(得分:1)
var baseUrl = System.Web.Mvc.UrlHelper.GenerateContentUrl(“〜/ images /”, HttpContext.Current);
使用GenerateContentUrl可以继续使用〜/
答案 1 :(得分:1)
呃......在查看了所有可用的帮助器和上下文对象之后,我必须得出结论,没有任何函数或方法可以提供完全你想要的东西(除了在其中一个中使用代字号)功能,如其他答案所示)。所有这些都需要某种字符串处理(例如Split()
或TrimEnd()
)才能工作。
相反,微软慷慨地给了我们一个创可贴功能,AppendTrailingSlash,您可以用它来解决这个问题:
var baseUrl = VirtualPathUtility.AppendTrailingSlash(HttpRuntime.AppDomainAppPath);
var tb = new TagBuilder("img");
tb.MergeAttribute("title", "Main Image");
tb.MergeAttribute("src", baseUrl +"images/test.jpg"); //notice I removed the initial slash
return new MvcHtmlString(tb.ToString(TagRenderMode.SelfClosing));
AppendTrailingSlash
保证不会"加倍"当虚拟目录是" /"时,正斜杠上,这应该适用于您的暂存和开发环境。
P.S。我非常确定您应该使用AppDomainAppVirtualPath而不是AppDomainAppPath
,它提供的是物理路径,而不是虚拟路径。
答案 2 :(得分:0)
您好,您也可以尝试使用Using double dot notation in URL link
<强>例如:强>
../ file意味着在父目录中查找文件。如果您刚刚提交了文件,则会查看当前目录。
由于