
ASP.NET MVC2 Webアプリケーションを新規作成した場合
http://localhost:○○/Home/index
だと、デフォルトのホームページ「マイ MVC アプリケーション」が表示されますが、
http://localhost:○○/Home/index.aspx
とaspx拡張子をつけると「リソースが見つかりませんでした。」といわれます。
従来型のASP.NET Webアプリケーションに慣れている者としては上記挙動が理解できません。
「逆では?」と感じられます。
なぜ上記のような結果になるのでしょうか?
ご案内の方がおられましたらよろしくご教示くださいませ。
No.1ベストアンサー
- 回答日時:
MVCのルーティングの動きがどうなっているかを理解する必要があります。
MVCではまずURLに該当するページそのものがあるかどうかを調べます。
実際にルートとなるフォルダの下にHomeフォルダがあり、そこにindex.aspxというファイルがあればそのファイルが実行されます。
デフォルトのホームページはここにはなく、Views/Home/index.aspx に作っているでしょうから、このファイルは見つかりません。
で、次にどうするかというと、URLに該当するコントロールのメソッドがないかが調べられるわけです。
index.aspxなんてメソッドは作成していないでしょうから、そんなリソースはない、という結果が返ってきます。
ちなみに、コントロールのメソッド内でViewを読ぶときに拡張子を付けてない、と思われるでしょうが、
この場合は.aspxとかを自動的につけてViewフォルダの下を探しにいきます。
こんな仕組みが用意されています。
MVCの場合はURLからファイルを探すのではなく該当するコントロールのメソッドを呼び出すのがメインの処理となる、という部分が理解できれば上記の動きが腑に落ちるかと思います。
ちなみにルーティングの説明は以下にあります。
http://msdn.microsoft.com/ja-jp/library/cc668201 …
ご教示いただいたサイト、書籍その他を勉強して以下のようなことが分かりました。
・ViewとControl
(1)MVCではContorllerのAction毎にViewが存在する。
(2)(1)のViewは
Views/Controller名/Actrion名.aspx
Views/Controller名/Actrion名.apcx
Views/Shared/Actrion名.aspx
Views/Shared/Actrion名.ascx
の順番でみにいく。
(3)(2)のデフォルト動作はGlobal.asax.cs内のroute.MapRoute()あたりで定義されている。
(4)aspxファイルは(1)(2)(3)の一連の流れにあるスクリプトファイルであり、従来型asp.netのaspxファイルみたくviewやcontrollerを兼ね備えた絶対的存在ではない。ViewエンジンもRazorその他に変更できる。
(5)上記(1)から(4)より、
従来型asp.net→aspxファイルにかなり依存して動作
ASP.net MVC→ControllerとView(とModel)が協調してフォルダ単位で動作
・Model
ある程度、手作業的にデータベースと紐付けする必要がある。
書籍では「ASP.NET MVC 実践プログラミング」の「第二章 ASP.NET MVCの基本」、「第三章モデル開発の基礎とScaffolding機能」、「第七章 ルーティング」が参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) microsoft Teams(work or school)が自動的にダウンロードされてしまいます 2 2022/09/15 17:34
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Windows 10 「新規作成」メニューが表示されません 2 2023/04/07 14:56
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
- au(KDDI) 「カメラへのアクセスを許可してください」のせいで年齢確認書類を撮影できない、アップロードできない 2 2022/11/01 00:04
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- SEO Googleで会社名を入れて検索するとホームページが表示されるようにしたい 4 2022/09/06 23:36
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
戻り値のないメソッド
-
C#で背景色の設定 (0xFFC0DBなど)
-
drawStringで文字間隔の調整
-
エクセルVBAで、条件に一致する...
-
VB6で印刷の幅を調べたい
-
メソッドが値を返すとき
-
離れた列をvbaで数値で選択する...
-
検索した後の見つかった件数を...
-
Vectorについて
-
JAVA言語,JSPによるクイズシス...
-
この式はどう解釈するのですか?
-
ShellExecuteってなんで関数?
-
VB.NETで色を比較するIF文を...
-
staticメソッドの長所短所
-
フォントサイズ(C# or VB)
-
引数で日付を2つ与え、その間の...
-
WMP.OCX(Windows Media Player...
-
DataGridViewでセルクリックイ...
-
PropertyGridの中央の縦線
-
0歳児の指しゃぶりに関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報