2009-07-17 18 views
0

これはルーティング機構に関する基本的な質問です。新しいMVCプロジェクトから、私はにHomeControllerでこれを持っている:ビュー\ホームフォルダでASP.NET MVCベーシックルーティング(ビュー名なし)

public ActionResult MyPage() 
{ 
    return View(); 
} 

を、私はMyPage.aspxを持っています。ルーティングは引き続き{controller}/{action}/{id}のデフォルトです。 http://localhost:1790/Home/MyPageと入力すると、MyPage.aspxへの経路が正しく設定されます。どのビューをレンダリングするかについては何も言わなかったので、ASP.NET MVCはMyPage.aspxに正しくルーティングする方法をどのように知っていますか? ActionResultの名前をView/aspxページ名としても使用できるかのように見えますが、ルーティングの仕組みが誤解されている場合を除きます。コントローラの名前がViewのサブフォルダ名に対応しているので、ホームフォルダにどのように表示されるのかが分かります。しかし、アクション名もaspx名に対応していますか?

ページがPHPだった場合は、それは動作しますか?

答えて

1

MVCは、View()だけを返してもView( "MyPage")(つまりアクション名)が必要であると暗黙的に想定しています。不必要に繰り返される感覚はありません。

デフォルトではPHPファイルは見つかりませんが、本当にしたい場合はその動作を上書きすることができます。私はあなたがPHPとASP.NET MVCを混在させようとする穏やかなシナリオを想像することはできませんが、誰が知っているのですか?

1

アクション名はビュー/部分ビュー名と同じです。

asp.net mvcは私の知る限りphpでは動作しません。

3

ASP.NET MVCは、コンベンションオーヴァーメントよりもコンベンションに従うと、ルーティングの問題などの基本的なことが起こります。ただし、必要に応じて設定することもできます。

1

既に説明したように、ASP.NET MVCは従来の設定よりも規則を使用します。箱から出して、フォルダ構造は次のようなもの(関連部分のみを示したので、メモリからそれをやって...)

サイトルート

+ Controllers 
    HomeController.cs 
    AccountController.cs 
+ Views 
    + Home 
     Index.aspx 
    + Account 
     Index.aspx 
    + Shared 

デフォルトルーティングハンドラは、次のようなものです:

"{controller}/{action}/{id}" 

ルートのデフォルト値がありますが、あなたは/ B/CであるURLを持っている場合、それはコントローラaControllerに行動aを探しますと方法について述べた場合は、パラメータとしてcを渡しコントローラはパラメータを受け入れます。

それについてのいくつかのことを明確にする必要があります。再度、コンベンションオーバーオーダー: 1)デフォルトのエンジンを使用している場合、すべてのコントローラークラスはコントローラーで終了する必要があります。このようにして、リクエストが入って{controller}の値が解析されると、エンジンはControllerをControllerに追加し、Controllerフォルダ(したがって名前空間)を探し、クラスを探します。 2)デフォルトでは、これは変更できます。コントローラのすべてのビューはViews/{controller}フォルダまたはViews/Sharedフォルダに存在する必要があります。 3)コントローラーのパブリックメソッドは、デフォルトでアクションです。この属性を属性で非表示にして、エンジンにメソッドを使用不可にすることはできますが、デフォルトでは公開されています。

したがって、要求が到着すると、ルートはすべての既知のルート(global.asax)と比較され、要求に一致する最初のルートが受け入れられます。その後、ルートはコンポーネントのパーツに解析され、アクションのコントローラ、アクション、およびパラメータが決定されます。

コントローラが特定されると、エンジンはそのコントローラのインスタンスをインスタンス化し、一致するメソッド(アクション)を実行します。

アクションはActionResultを返します。 Viewは実際にViewResultを返すextensinoメソッドです(正しく覚えている場合)。 アクションのデフォルトビューは、Views/{ControllerName}フォルダーにあるアクションと同じ名前のビューです。

ルーティングはそれ自体にとって獣です。私はあなたがそれを試してみるとよいと思っています。理解する分、しかし生き物は分かち合うものをマスターする。

私の知る限り、BTWには、コントローラアクションのビューとしてPHPページを使用するエンジンはありません。

関連する問題