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 件のコメント:
コメントを投稿