在IIS上运行的应用程序中使用HREF的asp.net mvc

问题描述:

对于博客内容,有部分视图代表寻呼机控件(非常类似于this)。代码生成与参考和href像,"/Blog/Posts/Page/1","/Blog/Posts/Page/2",在IIS上运行的应用程序中使用HREF的asp.net mvc

它的工作绝对罚款卡西尼,但切换到IIS后出现问题的HTML。虚拟文件夹中运行

IIS应用程序,因此URL是

http://localhost/tracky 

和位于博客区,

http://localhost/tracky/blog 

当我按下呼叫器按钮,我收到404,因为URL是

http://localhost/blog/page/3 

而不是

http://localhost/tracky/blog/page/3 

我的问题是,如何处理这种情况?如何更改代码生成以提供正确的URL?如何使其工作相同 - 作为根应用程序或虚拟文件夹中的应用程序?

源代码是here

+0

你怎么生成的网址? – marcind 2010-10-30 21:30:47

+0

现在它只是硬编码为“/ Blog/Posts/Page”+ pageIndex; – 2010-10-30 21:42:32

则需要由您的视图中使用ActionLink,或遵循您的href使用UrlHelper生成网址:<a href="<%=Url.Content("~/blog/page/3")%>" ..>bla</a>。这将生成根据您的应用程序根进行调整的Url。

+0

如何从代码隐藏,HtmlExtension助手类中使用它?我无法找到Url名称空间 – 2010-10-30 21:44:35

+0

ActionLink变体适合我... – 2010-10-30 22:32:23

+0

作为参考,这是最终的代码:http://goo.gl/dRK1 – 2010-10-31 07:39:29

您应该使用下列内容:

UrlHelper.GenerateContentUrl("~/Blog/Posts/Page/1"); 

~允许的URL相对于应用程序路径解决,应该产生两个卡西尼和IIS正确的结果。

+0

我认为'内容'而不是'GenerateContentUrl'就足够了。没有必要完全限定网址。 – spender 2010-10-30 21:37:40

+0

UrlHelper.GenerateContentUrl也接受httpContext,这使得它很难在辅助类中使用代码..并且单元测试它。 – 2010-10-30 21:41:43