3

私はこのコードを持っています

@Html.RadioButtonFor(model => model.LivStato, 1, Model.LivStato == 1)
@Html.RadioButtonFor(model => model.LivStato, -1, Convert.ToString(Model.LivStato) == string.Empty)

trueの場合Model.LivStato == 1、ラジオボタンがチェックされます。

Convert.ToString(Model.LivStato) == string.Emptytrueの場合、ラジオボタンがチェックされない理由がわかりません

私もこれを試してみます

@Html.RadioButtonFor(model => model.LivStato, -1, !Model.LivStato.HasValue)

しかし、動作しません。

モデル内:

public short? LivStato { get; set; }

誰か助けてもらえますか?

4

2 に答える 2

7

更新された回答

おっと、nullラジオボタンがリストの最初になかった場合、私の元の答えは機能しませんでした。@ sohtimsso1970で指摘されているように、ラジオボタンにはチェックされた属性があり、DOMの後半に別のチェックされたラジオボタンがない限り、値がnullでない場合でも通常は選択されます。 true/falseにバインドされたラジオボタンがnullにバインドされたラジオボタンの下に来ました。

これを念頭に置いて、より良い解決策を次に示します。

@{
    var dict = new Dictionary<string, object>();
    if (!Model.LivStato.HasValue) { dict.Add("checked", "checked"); }
}
<label>@Html.RadioButtonFor(model => model.LivStato, "", dict) Null</label>
<label>@Html.RadioButtonFor(model => model.LivStato, 1) +1</label>
<label>@Html.RadioButtonFor(model => model.LivStato, -1) -1</label>

これは、ヌルバインドされたラジオボタンがDOMのどこにあるかに関係なく機能し、正しいHTMLをレンダリングします。


元の答え:

次のラジオボタンを使用すると、nullにバインドされます。

<%: Html.RadioButtonFor(model => model.LivStato, "", new { @checked = !Model.LiveStato.HasValue }) %>

checkedViewModelプロパティがnullの場合にラジオボタンが正しくチェックされるように、この属性は必須です。

于 2014-02-27T02:36:06.850 に答える
3

オーバーロードを見てくださいHtmlHelper.RadioButtonFor。ブール値の3番目のパラメーターを「値==何かの場合はボタンをチェック」として使用する人は誰もいません。3番目のパラメーター(存在する場合)は、htmlAttributes用にここにあります。

http://msdn.microsoft.com/en-us/library/ee830415%28v=vs.108%29

firstLineが機能する場合、それ1は2番目のパラメーターとして使用しているからです(Model.LivStato == 1何もしません)。

試してみてください(未テスト)

@Html.RadioButtonFor(model => model.LivStato, 1)
@Html.RadioButtonFor(model => model.LivStato, -1)

コントローラで-1をnullに変更します。

于 2012-09-04T13:16:51.560 に答える