2011-11-07 85 views
0

我想訪問一篇文章,其中包含用戶友好的URL http://localhost/Content/Article/ {id}/{title},它在內部處理此網址,如http://localhost/Content/Article/ {i}。我爲這些網址創建了一個Url路由規則,即MVC中的URL重寫3

routes.MapRoute(
       "Article", 
       "{controller}/{action}/{id}/{title}", 
       new { controller = "content", action = "article", id = UrlParameter.Optional, title = UrlParameter.Optional } 
       ); 

但是它正在處理請求,但是html響應正在搞亂。它正在改變所有圖像,錨點,CSS,JavaScript網址。用/ Content/Article替換根URL並將我的html顯示爲亂碼。所有的CSS格式化都消失了。我已經嘗試過IIS7.0重寫模塊和Asp.nET路由,都給我這個問題。

回答

1

確保所有對外部文件的引用都與您網站的根目錄有關。

這不是ASP.NET路由的問題,這是您如何引用外部文件的問題。

+0

URL是相對的,我使用@ Url.Content(「〜/內容/圖片/ img.png」)作爲圖像源視圖。我正在使用剃刀視圖。 – Nps

+0

當使用url http:// localhost/Content/Article/10/title時,它帶來了正確的頁面,但它修改了Img,Css url的響應html。我有根目錄中的圖像文件夾,圖像應該是「/Images/img.png」,但返回「/Conten/Images/img.png」的響應。同樣,它正在發生與CSS和腳本。 – Nps

+0

我有內容作爲物理文件夾放置CSS和圖像,也有我的網站中的ContentController。這可能是問題的根源嗎? – Nps

0

如果您明確地在瀏覽器中輸入正確的url,是否會得到正確的頁面?

我遇到過這個問題很多,特別是當我有地區。我發現爲所有的@ Html.ActionLinks等使用T4MVC(NuGet Package)解決了這個問題。例如,使用T4MVC,而不是:

<li>@Html.ActionLink("Home Page", "Index", "Home")</li> 

...你可以寫:

<li>@Html.ActionLink("Home Page", MVC.Home.Index())</li> 

注MVC.Home.Index()。這是T4MVC如何讓你消除魔術字符串(actionName和controllerName)。換句話說,T4MVC允許您使用HtmlHelper.ActionLink以下過載:

HtmlHelper.ActionLink(string linkText, ActionResult result) 

相反的:

HtmlHelper.ActionLink(string linkText, string actionName, string controllerName) 

爲了逃避我現在的原因(我已經忘記了爲什麼!),這繞過我認爲你遇到的問題。

只需檢查是否在地址欄中輸入了所需的Url即可。如果是這樣的話,那麼鏈路就會變壞,而不是路由。

如果仍然有問題,那麼這是不是問題的答案...