2017-11-15 9 views
1

私はいくつかのブール属性(必須と無効)とのラジオボタンをレンダリングしようとして使用しています:MVC4:真/偽値でレンダリングされたHTML5ブール属性

@Html.RadioButton("radio-name","false", new { id="test", required=Model.BooleanValue}) 

<input type="radio" name="radio-name" id="radio-name-no" value="false" class="radio" @if (!Model.BooleanValue) { <text>required</text> } disabled="@Model.BooleanValue" /> 

しかし、

<input id="test" name="radio-name" required="False" value="false" type="radio"> 

:出力はこれです
<input name="radio-name" id="radio-name-no" value="false" class="radio" disabled="True" type="radio"> 

MVC4は、HTML5の仕様どおりブール属性をレンダリングする必要があり、なぜそれがdisabled="True"(またはFalse)を出力だ代わりdisabled="disabled"またはdisabledの(またはまったく何もBooleanValueプロパティがfalseの場合)?

+0

あなたは '='「Model.BooleanValue @」無効使って、それを言っているので - しかし、あなたはここでやりたいと思っているもの。 'disabled =" true "'と 'disabled =" false "'(または 'disabled =" disabled "'または単に 'disabled')はすべて同じです。条件付きで属性を追加する必要があります。 –

+0

Razor2は、HTML5属性がブール値の属性である場合、 'disabled =" True "'ではなく 'disabled'(または' disabled = disabled')としてレンダリングし、Modelのプロパティfalseまたはnullです。私の場合、ToString()を実行してブール値を属性に直接代入しているようです。 – user1527576

+0

最初のケースではなく( 'htmlAttributes'を' new {...} 'を使って追加します(条件付きの属性は当てはまりません)、2番目のケースは機能し、' disabled = "disabled"もしあなたがRazor2を使用していないと仮定することができます –

答えて

1

解決策はかなり変わっていました。いくつかのテストをしながら、@ifをHTML入力タグに入れました。これは、required属性を示すために使用された場合です。この後、私はdisabled="@Model.BooleanValue"属性を付けます。

この順序が予想される動作を妨害したようです。問題の解決の前にdisabled属性を置いてください(後で@ifを削除してrequired="@(!Model.BooleanValue)"に変換しました)。

は今作業コードは次のとおりです。

<input type="radio" name="radio-name" id="radio-name-no" value="false" class="radio" required="@(!Model.BooleanValue)" disabled="@Model.BooleanValue" /> 
関連する問題