ASP.NET MVC HTMLヘルパー
Modelと関連付けられるヘルパー(For系)
@Html.Displar(model => model.Name);
等、実在のモデルクラスが参照され、自動的に初期値が与えられる。
type属性
※html5対応:Type属性に応じて自動で入力が規制される最適な<input>要素を生成する。
例:
@Html.EditorFor(~ type="search"; />
<input~ type="search" >
@Html.EditorFor(~ type="email"; />⇒検索テキスト
@Html.EditorFor(~ type="url"; />⇒メールアドレス
@Html.EditorFor(~ type="tel"; />⇒電話番号
@Html.EditorFor(~ type="number"; />⇒数値
@Html.EditorFor(~ type="date"; />⇒日付
@Html.EditorFor(~ type="datetime"; />⇒世界標準日時
@Html.EditorFor(~ type="datetime-local"; />⇒ローカル日時
@Html.EditorFor(~ type="month"; />⇒月
@Html.EditorFor(~ type="week"; />⇒週
@Html.EditorFor(~ type="time"; />⇒時刻
@Html.EditorFor(~ type="range"; />⇒数値範囲(スライダー)
@Html.EditorFor(~ type="color"; />⇒色
@Html.EditorFor()
@Html.EditorFor(model => model.Field1)
⇒<input
data-val=~ data-val-number=~ 等DBに応じた属性
id="Field1" name="Field1" type="text" value="0" />
@Html.LabelFor()
@Html.LabelFor(model => model.Field1)
⇒<label for="Field1">Field1</label>
@Html.DisplayFor()
※モデル属性に応じて最適なhtmlを生成する。
※Model:name
public bool name { get; set; };
⇒チェックボックス
[DataType(DataType.URL)]
public string name { get; set; };
⇒ハイパーリンク
@Html.DisplayFor(model => model.Field1)
⇒
Field1
@Html.DisplayNameFor()
コンテキストのDisplayName属性を表示する
@Html.DisplayNameFor(model => model.Field1)
⇒
設定名
public class MyModel
{
[DisplayName(“設定名”)]
public string Field1 { get; set; }
}
Modelと関連付けられないヘルパー
Modelと関連付けない、初期値を与えない場合に使用。
@Html.Display()
※モデル属性に応じて最適なhtmlを生成する。
※Model:name
public bool name { get; set; };
⇒チェックボックス
[DataType(DataType.URL)]
public string name { get; set; };
⇒ハイパーリンク
@Html.Display(expression: "name")
⇒
name
@Html.TextBox()
@Html.TextBox(name:"txtTest",value:"aaa")
⇒
<input id="txtTest" name="txtTest" type="text" value="aaa" />
@Html.Editor()
@Html.Editor("name")
⇒
<input class="text-box single-line" id="name" name="name" type="text" value="" />
@Html.CheckBox()
@Html.CheckBox(name:"chkTest",isChecked:true)
@Html.CheckBox(name:"chkTest", isChecked: false)
⇒
<input checked="checked" id="chkTest" name="chkTest" type="checkbox" value="true" />
<input name="chkTest" type="hidden" value="false" />
<input id="chkTest" name="chkTest" type="checkbox" value="true" />
<input name="chkTest" type="hidden" value="false" />
@Html.RadioButton
@Html.RadioButton(name:"rdoTest", value:true)
@Html.RadioButton(name:"rdoTest", value: false)
⇒
<input id="rdoTest" name="rdoTest" type="radio" value="True" />
<input id="rdoTest" name="rdoTest" type="radio" value="False" />
@Html.Label()
@Html.Label(expression: "name")
⇒
<label for="name">name</label>
@Html.DropDownList()
@{
Dictionary<int, string> myDic = new Dictionary<int, string>
{
{3,"長嶋"},
{1,"王"},
{18,"堀内"}
};
SelectList mySelectList1 = new SelectList(items: myDic);
}
@Html.DropDownList(name: "name", selectList: mySelectList1)
⇒
<select id="name" name="name">
<option>[3, 長嶋]</option>
<option>[1, 王]</option>
<option>[18, 堀内]</option>
</select>
@{
List<int> myList = new List<int> { 1, 2, 3, 4, 5 };
SelectList mySelectList2 = new SelectList(items: myList);
}
@Html.DropDownList(name: "name", selectList: mySelectList2)
⇒
<select id="name" name="name">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
@Html.ListBox()
@Html.ListBox(name:"name",selectList:mySelectList1)
⇒
<select id="name" multiple="multiple" name="name">
<option>[3, 長嶋]</option>
<option>[1, 王]</option>
<option>[18, 堀内]</option>
</select>
@Html.ListBox(name:"name",selectList:mySelectList2)
⇒
<select id="name" multiple="multiple" name="name">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
@Html.Password()
@Html.Password(name: "name")
⇒
<input id="name" name="name" type="password" />
Form関連
@Html.BeginForm()
@using (Html.BeginForm()){~}
⇒
<form action="/~/~" method="post">
~
</form>
↓の書き方も可
@Html.BeginForm()
~
@Html.EndForm()
@using(Html.BeginForm(
actionName: "Index",
controllerName: "Next",
routeValues: new { id = "5", charset = "utf8" }, ※
method: FormMethod.Post,
htmlAttributes: new { tabindex = "1" }))
{
<input type="submit" value="送信"/>
}
⇒
<form action="/Next/Index/5?charset=utf8" method="post" tabindex="1">
<input type="submit" value="送信"/>
</form>
※複数のパラメーターをサーバーに渡す場合は匿名クラス(「「LINQtoEntity」参照」を利用する。
@Html.Hidden()
@Html.Hidden(name: "name",value:"aaa")
⇒
<input id="name" name="name" type="hidden" value="aaa" />
リンク/エンコード関連
@Html.ActionLink()
@Html.ActionLink(linkText: "次ページ", actionName: "Next")
⇒
<a href="/Test/Next">次ページ</a>
@Html.ActionLink(
linkText: "次ページ",
actionName: "Index",
controllerName: "Next",
protocol: "https",
hostName: "www.~",
fragment: "memo",
routeValues: new { id = "5", charset = "utf8" },
htmlAttributes: new { tabindex = 1 }
)
⇒<a href="https://www.~/Next/Index/5?charset=utf8#memo" tabindex="1">次ページ</a>
@Html.RouteLink()
※@Html.ActionLinkとほぼ同じ
@Html.RouteLink(
linkText: "次ページ",
routeValues: new {
Controller = "Next",
Action = "Index",
id = "5",
charset = "utf8"
},
htmlAttributes: new { tabindex = 1 }
)
⇒<a href="/Next/Index/5?charset=utf8" tabindex="1">次ページ</a>
その他
@Html.ValidationSummary()
@Html.ValidationSummary(excludePropertyErrors: true)
⇒無し
@Html.ValidationMessageFor()
@Html.ValidationMessageFor(model => model.Field1, validationMessage: "*")
⇒<span
data-valmsg-for="Field1"
data-valmsg-replace="false">*</span>
@Html.Encode()
@Html.Encode(value: "<")
⇒
<
@Html.Encode(value: ">")
⇒
>