2010-10-30 65 views
0

對於博客內容,有部分視圖代表尋呼機控件(非常類似於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

回答

3

則需要由您的視圖中使用ActionLink,或遵循您的href使用UrlHelper生成網址:<a href="<%=Url.Content("~/blog/page/3")%>" ..>bla</a>。這將生成根據您的應用程序根進行調整的Url。

+0

如何從代碼隱藏,HtmlExtension助手類中使用它?我無法找到Url名稱空間 – 2010-10-30 21:44:35

+0

ActionLink變體適合我... <%:Html.Pager(Url.Action(「Page」,「Posts」,new {area =「Blog」,id =「{0}」}} ),Model.TotalPages,Model.CurrentPage)%> – 2010-10-30 22:32:23

+0

作爲參考,這是最終的代碼:http://goo.gl/dRK1 – 2010-10-31 07:39:29

0

您應該使用下列內容:

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

相關問題