ASP.NET MVC HTML ヘルパー②
今回から、HTML ヘルパー をやります。今回はBeginForm、DisplayName、DisplayNameFor、Editor、EditorFor、Display、DisplayFor、DisplayText、DisplayTextFor、
ValidationMessage、ValidationMessageFor、ValidationSummaryをやります。
HTMLヘルパー
@model HelloWorld.Models.Hello
@{
ViewBag.Title = "HelloView";
}
@using (Html.BeginForm())
{
<h3>Label</h3>
@Html.Label("Str1")
<br />
@Html.LabelFor(a => a.Str1)
<hr />
<h3>TextBox</h3>
@Html.TextBox("Str1")
<br />
@Html.TextBoxFor(a => a.Str1)
<hr />
<h3>Password</h3>
@Html.Password("Str1")
<br />
@Html.PasswordFor(a => a.Str1)
<hr />
<h3>TextArea</h3>
@Html.TextArea("Str1")
<br />
@Html.TextAreaFor(a => a.Str1)
}
DisplayName、DisplayNameFor、Editor、EditorFor、Display、DisplayFor、DisplayText、DisplayTextFor
ヘルパー | 説明 |
---|---|
DisplayName | モデルで指定したタイトルを表示 |
DisplayNameFor | ↑のFor版 |
Editor | 入力項目に変換。テキストならTEXT、ブーリアンならCHECKBOXになる |
EditorFor | ↑のFor版 |
Display | 入力項目に表示される値を表示。 |
DisplayFor | ↑のFor版 |
DisplayText | 入力項目に表示される値をテキストで表示。 |
DisplayTextFor | ↑のFor版 |
Editor、EditorForはPOSTの戻り値で更新されません。更新された値をセットしたい場合、コントローラで ModelState.Clear();を実行します。
前回のサンプルで使っていますので参考にして下さい。
下にサンプルを作ったのサンプルの動きで確認して下さい。
ValidationMessage、ValidationMessageFor、ValidationSummary
エラーメッセージを表示します。ValidationMessage、ValidationMessageForは個別のエラー、ValidationSummaryはエラーをまとめて表示します。ビュー(HelloView.cshtml)
@model HelloWorld.Models.Hello
@{
ViewBag.Title = "HelloView";
}
@using (Html.BeginForm())
{
<br />
<table>
<tr>
<th>
HTMLヘルパーの指定
</th>
<th>
データ
</th>
</tr>
<tr>
<td>
DisplayName
</td>
<td>
@Html.DisplayName("Str1")
</td>
</tr>
<tr>
<td>
Editor
</td>
<td>
@Html.Editor("Str1")
</td>
</tr>
<tr>
<td>
Display
</td>
<td>
@Html.Display("Str1")
</td>
</tr>
<tr>
<td>
DisplayText
</td>
<td>
@Html.DisplayText("Str1")
</td>
</tr>
<tr>
<td>
ValidationMessageFor
</td>
<td>
@Html.ValidationMessage("Str1")
</td>
</tr>
</table>
<hr />
<table>
<tr>
<th>
HTMLヘルパーの指定
</th>
<th>
データ
</th>
</tr>
<tr>
<td>
Editor
</td>
<td>
@Html.Editor("Str2")
</td>
</tr>
<tr>
<td>
ValidationMessageFor
</td>
<td>
@Html.ValidationMessageFor(model => model.Str2)
</td>
</tr>
</table>
<hr />
<table>
<tr>
<th>
HTMLヘルパーの指定
</th>
<th>
データ
</th>
</tr>
<tr>
<td>DisplayNameFor</td>
<td>@Html.DisplayNameFor(model => model.Boo)</td>
</tr>
<tr>
<td>EditorFor</td>
<td>@Html.EditorFor(model => model.Boo)</td>
</tr>
<tr>
<td>DisplayFor</td>
<td>@Html.DisplayFor(model => model.Boo)</td>
</tr>
<tr>
<td>DisplayTextFor</td>
<td>@Html.DisplayTextFor(model => model.Boo)</td>
</tr>
</table>
<input type="submit" />
<hr />
@Html.ValidationSummary()
}
コントローラ(HelloController.cs)
using HelloWorld.Models;
using System.Web.Mvc;
namespace HelloWorld.Controllers
{
public class HelloController : Controller
{
// GET: Hello
public ActionResult Index()
{
return View();
}
public ActionResult HelloView()
{
Hello hl = new Hello();
hl.Str1 = "初期値";
hl.Boo = true;
return View(hl);
}
[HttpPost]
public ActionResult HelloView(Hello hl)
{
hl.Str1 = "戻り値";
hl.Boo = false;
return View(hl);
}
}
}
モデル(Hello.cs)
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace HelloWorld.Models
{
public class Hello
{
[DisplayName("タイトル(文字列)")]
[DataType(DataType.Text)]
[StringLength(10, ErrorMessage = "{0}は{1}文字以内で入力して下さい。")]
public string Str1 { get; set; }
[Required(ErrorMessage = "テキストを入力して下さい")]
public string Str2 { get; set; }
[DisplayName("タイトル(ブーリアン)")]
public bool Boo { get; set; }
}
}
フォルダ構成は以下になります。 以下にアクセスします。
http://localhost:55172/Hello/HelloView
初期表示時
Submit実行後
ページのトップへ戻る