Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

モジュール化の考え方

ModelとViewの関係

Model (0..1) <---> (1) View

ControllerとViewの関係

View (1..*) <---> (1) Controller

View (1) <---> (1) Controller

ASP.NETのWebForm?に近い

View (1..*) <---> (1) Controller

スキャフォールディング(scaffolding)では、この考え方を採用している。

上記に中立

1業務、1Controllerなどの考え方でもイイ。

モジュール化の要約

以下の2つの方式から選択する。

業務画面は、Modelに対応するCRUD画面を生成するスキャフォールディングと異なり
Controllerが厳密に1つのModelに紐付かないため、画面単位のモジュール化のほうが適合するかもしれない。

スキャフォールディング方式

Model (0..1) <---> (1) View (1..*) <---> (1) Controller

ASPXライクな1画面1モジュール方式

Model (0..1) <---> View (1) <---> (1) Controller

Controllerの作成

Actionの作成

URLルーティング

ユーザーがブラウザーに URL を入力すると、MVC アプリケーションでは、
RouteConfig?.cs / .vb ファイルに定義されているルーティング規則
を使用してURL が解析され、コントローラーのパスが特定される。

HTTP method

引数

戻り値

アクションメソッドの結果として、クライアントに返す適切なビューを選択する。

Modelの作成

Viewの作成

Razer、ASPX の使い分け

Razer、ASPX構文でModelを使ってHTMLを生成。

ASPX と Razor の記述方法の比較

ASPXRazor
インライン式 (プロパティの値を表示する場合など)<%: Model.Property1 %>@Model.Property1
インライン式 (エスケープ処理をスキップし、プロパティの値をそのまま表示する場合)<%= Model.Property1 %>@Html.Raw(Model.Property1)
コードブロック (ロジックを直接 View に記述する場合) (C#)<% string str = "あいうえお"; %>@{ string str = "あいうえお"; }
コードブロック (ロジックを直接 View に記述する場合) (VB)<% Dim str As String = "あいうえお" %>@Code
    Dim str As String = "あいうえお"
End Code

BeginForm? の使い分け

HTML.BeginForm?

部分Viewの作成は共通化のため。

Ajax.BeginForm?

部分Viewの作成は更新範囲の定義のため。

参考

Fromタグの切り方

複数Formの場合はFormをネストさせないこと。
#HTMLの仕様でFormのネストは禁止されている。

HTML ヘルパーの使い分け

Html.xxxx と Html.xxxxFor の2種類のHTML ヘルパーがある。

Html.xxxx

Html.TextBox?("Category") のように、プロパティを文字列でマップ指定する場合は、"For" がつかない HTML ヘルパーを使用する。

Html.xxxxFor

Html.TextBoxFor?(model => model.Category) のように、プロパティをラムダ式でマップ指定する場合は、"For" で終わる HTML ヘルパーを使用する。

使い分け

以下のケースで使い分ける。

個人的には、

の場合に最も適合すると考える。

グリッドの生成

WebGrid?のHTML ヘルパーを使用すると、MVCなのにHTML感を味わえないので、Loopで実装することもある。

View

全体View

部分View

画面遷移の考え方

ルーティング」で説明したとおり、
URLでController+Actionを指定すると指定のControllerのActionが実行される。
#ただし、Actionを省略した時は、Index(既定のAction)が呼ばれる。

画面遷移のメソッド

Viewの選択

下記ヘルパ・メソッドを使用する。

画面遷移

画面遷移の方法

以下の方式が考えられる。

POSTでView選択 or 画面遷移

自ControllerにPOST後にView選択 or 画面遷移

例外的な遷移

URLと画面

View (1..*) <---> (1) Controller(スキャフォールディング)+ POST遷移

URLは

View (1) <---> (1) Controller(ASPXライク)+ 自ControllerにPOST後に遷移

URLは

フォルダ構成

フォルダ分けの意味

各フォルダについて

App_Start

Contents

Scripts

Models

Controllers

Views

Area

なお、Areaを作るとViewsも含めたサブシステム単位のフォルダ分割ができる。
以下、App_Startのマップルートが追加されるような感じ。

情報の持ち回り・状態管理方式

Viewstate

利用不可能(必要であれば、自前で実装する必要がある)

Hidden

Formの定義・分割が可能なため、持ち回りも共通化困難。

チェック処理方式

クライアント

JavaScriptでのチェック

サーバ

Action内でのチェック

モデルにチェックコードを実装

色々あってよく解らない。

脆弱性

サニタイジング

リクエスト検証


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS