2011-07-02 25 views
7

これは、動作させる方法を理解できない単なる例です。MVC3コントローラのフォルダはURLに表示されません

"Admin"という新しいフォルダを追加し、 "Index"というアクションを持つコントローラ "News"を追加すると、そのURL(404)を開こうとするとサーバーエラーが発生します。あなたは "/インデックス" は、その背後に、それは動作しません入力したとしても

http://url/Admin/News

。どのようにして類似したURLにつながる階層を作ることができますか?ただ、明確にするために、私はURLのように作成したい:

http://url/folder1/folder2/controller/action

おかげ

答えて

16

をあなたはまだ、「物理ファイル・パス」の考え方に考えているようです。 .NET MVCでは、ルーティングの概念を使用して、コントローラクラスとアクションにマップされるルートを定義します。つまり、あなたはファイルにマッピングされていません。クラスにマッピングしています。

Webプロジェクトのglobal.asaxファイルを見ると、RegisterRoutes()という名前のメソッドが表示されます。この方法は、実行する正しいコントローラ/アクション/パラメータ/パターンを見つけるために利用される、あなたのサイトの利用可能なすべてのルートを結び付けます。

ここで、私があなたが探しているものを解決することをお勧めする方法は、領域を作成することです。それはあなたがあなたのウェブサイトへの管理セクションを持つようにしたいようなので、私は次のようにしてください聞こえる:

右、あなたのウェブサイトのプロジェクトをクリックして「追加」を選択し、選択「エリア」

enter image description here

あなたのエリアに名前をつけてください。この場合、「Admin」は意味をなさないでしょう。

ソリューションエクスプローラに「エリア」管理者が追加されました。標準プロジェクトの構造とレイアウトをどのように模倣しているかに注目してください。

enter image description here

あなたの行動

を追加 新しく作成された行政区域内のコントローラを追加し、 "ニュース" という名前をここでこれを実行、テスト結果のURLです:

enter image description here

この解決策は簡単です。もし私が上で述べたRegisterRoutes()メソッドであなた自身のルートを作ることに掘り下げなければならない場合は、それをさらに使いたいと思うでしょう。ルーティングはあなたがしっかりと把握する必要がありますので、そうすることをお勧めします。

+0

これ以上の回答は得られませんでした。あなたのよく説明された答えをありがとう! – user825887

関連する問題