在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
则需要由您的视图中使用ActionLink
,或遵循您的href使用UrlHelper生成网址:<a href="<%=Url.Content("~/blog/page/3")%>" ..>bla</a>
。这将生成根据您的应用程序根进行调整的Url。
如何从代码隐藏,HtmlExtension助手类中使用它?我无法找到Url名称空间 – 2010-10-30 21:44:35
ActionLink变体适合我... – 2010-10-30 22:32:23
作为参考,这是最终的代码:http://goo.gl/dRK1 – 2010-10-31 07:39:29
您应该使用下列内容:
UrlHelper.GenerateContentUrl("~/Blog/Posts/Page/1");
的~
允许的URL相对于应用程序路径解决,应该产生两个卡西尼和IIS正确的结果。
我认为'内容'而不是'GenerateContentUrl'就足够了。没有必要完全限定网址。 – spender 2010-10-30 21:37:40
UrlHelper.GenerateContentUrl也接受httpContext,这使得它很难在辅助类中使用代码..并且单元测试它。 – 2010-10-30 21:41:43
你怎么生成的网址? – marcind 2010-10-30 21:30:47
现在它只是硬编码为“/ Blog/Posts/Page”+ pageIndex; – 2010-10-30 21:42:32