首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL forwarding+masking触发Url.Content() & Html.Action()在ASP.NET MVC 3 RC下的双根目录。

URL forwarding+masking触发Url.Content() & Html.Action()在ASP.NET MVC 3 RC下的双根目录。
EN

Stack Overflow用户
提问于 2010-11-19 01:35:29
回答 1查看 595关注 0票数 1

(注:试图寻找类似的问题,但最近的问题似乎仍然不符合我的问题。即MVC - Application root appears twice in url using Url.Content/Url.Action )

我目前有两个ASP.NET MVC 3 RC应用程序在一个域下运行,即

mydomain.com/app1

mydomain.com/app2

现在,由于它是一个单独的应用程序,我注册了另一个域名,并启用了掩码转发到其中一个应用程序(即http://foo.com将加载http://mydomain.com/app1,浏览器中只显示http://foo.com,而不是http://mydomain.com/app1)。

这就是MVC开始抱怨的地方。Url.Content()和Html.Action()都会生成意外的URL。例如,在Html.Action()的情况下,如果我有@Html.ActionLink("About", "Index", "About"),我希望得到http://foo.com/about,但最终得到的是@Html.ActionLink("About", "Index", "About")

因为http://foo.com/app1/about转换为http://mydomain.com/app1/app1/about,所以链接显然无法工作。

类似地,对于Url.Content,如果我有href="@Url.Content("~/Content/Site.css")",浏览器将无法加载样式表,因为它认为位置在href="@Url.Content("~/Content/Site.css")"而不是http://foo.com/Content/Site.css

有什么办法,我可以让MVC忘记它的起始目录(即从它生成的URL中删除"app1/“吗?)

谢谢你的阅读,如果这里需要更多的信息,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2010-11-19 16:51:38

现在,有一些解决办法。

对于Url.Content(),我们将简单地从Url.Content("~/...")中删除"~“,从而消除相对路径(即/app1)

至于Html.ActionLink(),解决方案似乎很混乱,因为总是假定有相对路径,所以这里的解决方法是暂时的。有谁有更好的解决方案吗?

代码语言:javascript
复制
public static MvcHtmlString ActionLinkAbsolute(
                    this HtmlHelper<dynamic> htmlHelper, string linkText, string actionName, string controllerName)
                {
                    MvcHtmlString result = LinkExtensions.ActionLink(htmlHelper, linkText, actionName, controllerName);
                    result = new MvcHtmlString(result.ToHtmlString().Replace(VirtualPathUtility.ToAbsolute("~"), String.Empty)); 
                    return result;
                }

这里的解决办法并非没有后果。为了支持URL掩蔽,并忽略相对路径,http://mydomain.com/app1将不会生成预期的链接,因为它总是删除相对路径。这并不完美,但这是我可以忍受的一个缺点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4221392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档