0

これを機能させることができません...次のルートがあります:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("*.html|js|css|gif|jpg|jpeg|png|swf");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

routes.MapRoute(
    "Default", // Route name
    "{lama}/{controller}/{action}", // URL with parameters
    new { controller = "Home", action = "Index", lama = "en-gb" } // Parameter defaults
);

そして、ページをロードしたら.. 次の URL を取得しようとする img 要素があります: css/img/backgrounds/slide1_2048x1280.jpg

しかし、画像が表示されず、コンソールを確認すると次のエラーが表示されます: GET {my localhost}/cn/Home/css/img/backgrounds/slide1_2048x1280.jpg 404 (Not Found)

ルートシステムを理解するのにとても苦労しています..これについてもっと詳しく読むことができる場所はありますか?..そして、誰かがこの単一の問題で私を助けてくれませんか?

4

2 に答える 2

1

あなたのHTMLの相対URLに違反していると思います。

これが Razor か Aspx かを言っていないので。私はAspxで行くつもりです。

imgタグを書くとき、あなたがやっているようです:

<img src="[relative_path_to_file]" />、ページに相対的な img のパスを使用します。

これで始まらない/場合、特に MVC URL が実際のページのパスにマップされないため、問題が発生することはほぼ確実です。

あなたがしたいことはUrl.Content("~/[full_path_to_file]")、絶対パスが常に使用されることを保証する使用することです。

別の注意点として、ディスク上に存在するファイルのこれらすべての無視ルートを実際に記述する必要はありません。デフォルトでは、ルーティング エンジンは既存のファイルをルーティングしません。既存のファイルをルーティングするには、グローバルにメソッドを設定routes.RouteExistingFiles = trueする必要があります。RegisterRoutesだから私はあなたがそれらを取り除くべきだと思います。

于 2012-08-06T14:42:30.797 に答える
0

私は通常、1)stackoverflow(明らかに!)、および2)msdnドキュメントは非常に優れています: http://msdn.microsoft.com/en-us/library/dd410120.aspx。しかし、私は通常、具体的に必要なものをグーグルで検索します=)

ただし、特定のファイル タイプを無視するようにルートを設定しようとしているように見えますか? これを処理する方法についていくつかの良いアイデアを提供するこの記事を見つけました。

以前は 1 つか 2 つのファイル タイプだけをブロックしたことがあり、ファイル タイプごとに 1 行を作成しました。あなたがやっているように、拡張子がパイプ (|) で区切られた 1 行を作成できるかどうかはわかりません (私は間違っている可能性があります!)

routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*allswf}", new {allswf=@".*\.swf(/.*)?"});
于 2012-08-06T14:14:17.090 に答える