VisualStuidioCommunity2015/Fw4.5.2/C#
ASP.NET Web Formsではサーバーコントロールがありました。
ASP.NET MVCではサーバーコントロールにかわって、HTMLヘルパーを使用しコントロールをレンダリングします。
基本的なHTMLヘルパー
- BeginForm / BeginRouteForm
- EndForm
- Label / LabelFor
- TextBox / TextBoxFor
- TextArea / TextAreaFor
- Password / PasswordFor
- Hidden/ HiddenFor
- RadioButton/ RadioButtonFor
- CheckBox/ CheckBoxFor
- DropDownList/ DropDownListFor
- ListBox / ListBoxFor
- EnumDropDownListFor
HTMLフォームのレンダリング
BeginForm 、EndForm
BeginFormメソッドは<form>タグを生成します。 EndFormメソッドは</form>タグを生成します。@Html.BegionForm() ・・・フォームの内容(省略) @Html.EndForm()BeginFormメソッドはusing構文を使用することもできます。 using構文を使用すると、ブロックの終了で</form>タグを生成します。
@using (Html.BegionForm()) { ・・・フォームの内容(省略) }BeginFormメソッドの引数をまったく指定しない場合、現在のアクションメソッドにPostします。
BeginFormメソッドにはいろいろなオーバーロードが用意されています。
主な引数を指定した場合の例です。
@{ //アクション名 string actionName = "Edit"; //コントローラー名 string controllerName = "HtmlHelper"; //アクションメソッドへの引数 object routeValues = new { id ="1",otherParam ="xxx"}; //HTTPメソッド(GET/POST) FormMethod frmMethod = FormMethod.Post; } @using (Html.BeginForm(actionName, controllerName, routeValues, frmMethod)) { ・・・フォームの内容(省略) }「<form action="/helper/HtmlHelper/Edit/1?otherParam=xxx" method="post">」と生成されます。
BeginRouteForm
BeginRouteFormメソッドを指定すると、ルート定義ファイルで設定されているルート名へ送信するフォームを生成できます。ルート定義についてはコチラ ASP.NET MVC 04_ルーティングの基礎
ルート定義ファイルの内容です。
App_Start/RouteConfig.cs
routes.MapRoute( name: "HtmlHelper", url: "helper/sample/{controller}/{action}/{id}", defaults: new { controller = "HtmlHelperSample", action = "Edit", id = UrlParameter.Optional } );以下の例では、ルート名「HtmlHelper」、コントローラー「現在のコントローラー名」、アクション「現在のアクションメソッド名」に送信されるformタグが生成されます。
ルート定義のデフォルトコントローラーのデフォルトアクションではありません。 現在HelloControllerのWorldアクションを実行していれば、
「<form action="/helper/sample/Hello/World" method="post">」と生成されます。
@using (Html.BegionRouteForm("HtmlHelper")) { ・・・フォームの内容(省略) ]
コントローラ名やアクションを指定する場合、匿名型のオブジェクトとして指定します。
@{ //ルート名 string routeName = "HtmlHelperSample"; //ルートパラメータ object routeValues = new { Controller = "HtmlHelperSample", Action = "Edit", id = 1, otherParam = "xxx" }; //HTTPメソッド(GET/POST) FormMethod frmMethod = FormMethod.Post; } @using (Html.BeginRouteForm(routeName, routeValues, frmMethod)) { ・・・フォームの内容(省略) }「<form action="/helper/sample/HtmlHelperSample/Edit/1?otherParam=xxx" method="post"> 」と生成されます。
0 件のコメント:
コメントを投稿