最終更新日:2018‐11-15
Asp.net でRazorを使っているといつもハマってしまうトラップポイントがありますので忘れないようにまとめておきます。
EditorForヘルパーについて
EditorForヘルパーは、HTML属性が反映されない。例えば以下のように書いても非活性になりません。その場合はためらわずTextBoxForなどの個別のヘルパーを使用します。placeholderや、Readonlyも同様です。
@Html.EditorFor(model => model.StoreName, new { @disabled = "disabled" })
以下のように書きます。
@Html.TextBoxFor(model => model.StoreName, new { @disabled = "disabled" })
DropDownListがselectedにならない
DropDownListForは、Modelとバインドした場合、第2引数のSelectListItemの値とModelの値が合致した場合、selectedに自動でしてくれる仕様があるのですが、ならない場合があります。
詳しく調べたわけではないのですが、どうも型が合っていないと一致とみなしてくれないようです。その場合の対処法としては、ViewModelの型を変更して合わせるか、.chtml内で再度SelectListItemをnewして、Modelの値と一致したらselectedを設定してあげるという技があります。
@Html.DropDownListFor(
model => model.PrefectureCode,
Model.PrefectureOptions,
"都道府県を選択してください",
new { @class = "title_list"}
)
@Html.DropDownListFor(
model => model.PrefectureCode,
Model.PrefectureOptions
.Select(x => new SelectListItem()
{
Value = x.Value,
Text = x.Text,
Selected = x.Value == Model.PrefectureCode
}),
"都道府県を選択してください",
new { @class = "title_list"}
)
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。