I以下のモデルがあります:RadioButtonFor選択しない値
public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
}
は、私は、デフォルトの性別が女性になりたいので、私はアクションでそれを設定します。最後に
public ActionResult Create()
{
var model = new Person { Gender = "F" }; // default is female
return View(model);
}
を、このビューは次のようにすべてレンダリングされます。
@model Person
@using (Html.BeginForm())
{
@Html.EditorForModel()
<p><input type="submit" value="Create" /></p>
}
これはすべて正常に動作します。さて、単純なテキストボックスの代わりに、より直感的なラジオボタンのペアとしてジェンダーを表示したいとします。だから私は、次のテンプレートを作成し、共有/ EditorTemplates/Gender.cshtmlに保存します。
@model string
@Html.RadioButtonFor(model => model, "F") Female
@Html.RadioButtonFor(model => model, "M") Male
最後に、私は[UIHint("Gender")]
と性別を飾ります。
性別が正しく素晴らしいですラジオボタン、でレンダリングされますが、...
問題
女性は、もはや前のデフォルト値として選択していますし、代わりに私がで終わります2つのラジオボタンが空白。何か不足していますか?
興味深いことに、RadioButtonFor
をテンプレートからビュー(model => model
からへ変更)に移動すると、すべて正常に動作します。私はこれが実行可能な回避策であることを知っていますが、これらのテンプレートヘルパーは、それらを行かせる前にすべての可能性をむしろ使い果たしてしまうような驚くほど中毒性のある便利なものです。
+1と回答。治療に取り組んだ!どちらも醜いわけではない。もし私が '@ Html.EditorForModels()' 's Thanksを保つならば、私はむしろ "ugliness"で生活したいでしょう。:) –
私はそれが醜いではないことに同意し、魅力を働いた。 – danludwig
私はこのアイデアをとり、それを拡張しました。 List>をエディタテンプレートに渡し、ラジオボタンの作成に使用するViewDataを追加しました。私のテンプレートは次のようになります –
davidbitton