2009-07-01 19 views
7

コントローラ(およびその後のルート)をPropertiesControllerという名前で使用しようとすると、厄介な問題が発生します。 。"PropertiesController"という名前のコントローラを使用したASP.NET MVCルーティング

私の解決策では、「プロパティ」という名前のディレクトリ(実際には削除できないディレクトリ)があるためだと思います。これには道がありますか?

ルートの設定は一つだけの簡単なルートである:

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Properties", action = "List", id = "" } // Parameter defaults 
); 

と「http://localhost/aptment2/properties/」を要求するとき、私はIIS7に入るエラーがある:

alt text

確かにこのラウンド方法があります私はちょうど見つけることができません?乾杯。

+0

そのビューを直接参照するか、default.aspxページを最初に通過していますか(F5キーやCtrl + F5キーなど)? default.aspxの代わりにスタートページとして設定されたビューがある場合、ルート登録がバイパスされているかどうか不思議です。 – nkirkes

+0

これをデバッグしようと2時間焼き尽くしたので、次回に彼のことを覚えておいてください – mxmissile

+0

URLは 'properties/index 'というURLがうまくいけません。 – mxmissile

答えて

4

他の誰かが同じ問題を抱えているので、私はあなたが(私はClassControllersが同様に出ている想像して)ここに予約されたキーワードに実行していることを推測しています。

初めてのことではありません。環境の内部を深く掘り下げて、you can't route to Windows' reserved keywords eitherです。

2

クイックテストを実行すると、同じ動作が発生します。プロパティ以外のものを使用することは実行可能な選択肢ですか?

+0

MVCのアイデアが完全にコントロールされ、URLの命名規則ができるだけきれいであるということがすべて可能な場合は、私はできない方がよいでしょう! –

+0

まあ、一種です。それはルーティングの背後にある考え方であり、必ずしもMVCではありませんが、MVCは予約語や他のリソースの名前を使用しないことを含む特定の規則に依存します。私はそのルート定義をさらにロックダウンすることを提案するか(提案を伴う編集を追加する)、またはコントローラの別の名前を思いつくことを提案する。 – nkirkes

+0

私はもう少しルートをロックダウンしようとし、同じ結果を得る。あなたはこれにSOLかもしれませんが、周りに道があるかどうかを知りたいのです。 – nkirkes

0

これはオプションかどうかわかりませんが、既存のファイルへのルーティングを無効にすることができます。

routes.RouteExistingFiles = false; 
4

IIS Expressを使用するように構成されたMVC 3アプリケーションでPropertiesControllerセットアップがあります。私はあなたがしている正確なエラーを得ることはありませんが、これは似ています(404.20デフォルトドキュメントなし)と私はそれが同じ理由であると確信しています。

コンパイルされたアプリケーションのビルドを公開してから、プロパティフォルダを持たないため、本番環境で問題は発生しません。

ローカルで開発中にこの問題を回避するには、すべての静的コンテンツ(scripts/css/etc ...)を1つのディレクトリに入れておき、それを無視してRouteExistingFilesをオンにします。

routes.IgnoreRoute("static/{*wildcard}"); 
    routes.RouteExistingFiles = true; 

これで私の問題は解決しました。これでexample.com/properties/エラーを無料で閲覧できます。

関連する問題