2011-11-07 12 views
0

ユーザーフレンドリーなURL http://localhost/Content/Article/ {id}/{title}の記事に、http://localhost/Content/Article/ {i}のようにこのURLを内部処理しています。これらのURLの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のURLを変更しています。ルートURLを/ Content/Articleと置き換えると、自分のhtmlが表示されています。すべてのCSSがなくなりました。私はIIS7.0リライトモジュールとAsp.nETルーティングを試しました。どちらも私にこの問題を与えています。

答えて

1

外部ファイルへのすべての参照が、あなたのウェブサイトのルートを基準にしていることを確認してください。

これはASP.NETルーティングの問題ではなく、外部ファイルをどのように参照しているかに問題があります。

+0

URLは私が(「〜/コンテンツ/画像/ img.png」)画像としてUrl.Content @使用していますが、相対的なものビューのソース。私は剃刀の眺めを使用しています。 – Nps

+0

URL http:// localhost/Content/Article/10/titleを使用すると、正しいページが表示されますが、応答HTMLではImg、Css urlが変更されます。私はルートにイメージフォルダを持っていますが、イメージは "/Images/img.png"でなければなりませんが、 "/Conten/Images/img.png"を返すレスポンスです。同様に、CSSやスクリプトでも起こっています。 – Nps

+0

私はcssと画像が置かれている物理的なフォルダとしてContentを持っていて、自分のサイトに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)を取り除く方法です。これは、(私がなぜ忘れてしまった!)今私を逃れる理由から

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

HtmlHelper.ActionLink(string linkText, ActionResult result) 

の代わりに:他の言葉では、T4MVCはあなたがHtmlHelper.ActionLinkの以下のオーバーロードを使用することができます私はあなたが持っていると思う問題の周りに取得します。

アドレスバーに目的のURLが入力されているかどうかを確認して確認してください。そうであれば、ルーティングではなく悪いリンクになります。それでも問題が解決しない場合は、これが答えではない

...