2016-10-05 15 views
0

パラメータはASP.NET MVC 5 NULL可能ブール - 私は私のモデルではNULL可能ブール値を持っている

public bool? Property { get; set; } 

は、と私は、レンダリングにクラスform-controlを追加することができますどのようにEditorFor

@Html.EditorFor(model => model.Property) 

を経由して、それをレンダリング選択し、文字列をローカライズする方法Not setTrueFalse?それとも、カスタム文字列で置き換えることができますか?

+0

あなたがあなた自身のテンプレート(ソースコードに組み込まれてthatsの)を作成する場合を除き、あなたは値を変更することはできません。どのバージョンのMVCですか? (MVC-5.1 +の 'EditorFor()'を使ってのみhtml属性を追加できます) –

+0

おそらく5.2.3 ' ' – Kicker

+1

その場合' @ Html.EditorFor(m => m.Property、new {htmlAttributes = new {@class = "フォームコントロール"}}) '。しかし、カスタム文字列が必要な場合は、カスタムの 'EditorTemplate'を作成するか、' SelectList'に3つの値が含まれる 'DropDownListFor()'を使う必要があります。 –

答えて

1
@Html.DropDownListFor(m => m.Property, new SelectList(new[] 
       { 
        new SelectListItem { Value = null, Text = "Not set" }, 
        new SelectListItem { Value = false, Text = "False" }, 
        new SelectListItem { Value = true, Text = "True" }, 
       }, 
       "Value", 
       "Text" 
       ), 
     new { @class = "form-control" }) 
+1

なぜ世界では 'new SelectList()'を使って第1のものから2番目の同じ 'IEnumerable 'を作成しているのですか(無意味な余分なオーバーヘッドですか? –

+0

そして答えにコメントを見るJaimin Dave –

+0

あなたは正しいです。私は自分の答えを –

0
You can try with below code: 

     @Html.DropDownListFor(m => m.Property, 
        new List<SelectListItem>(){      
        new SelectListItem { Value = "False", Text = "False" }, 
        new SelectListItem { Value = "True", Text = "True" } 
    },"Not set",new { @class = "form-control" }) 
+2

編集これはどちらも動作しません。プロパティは 'bool? 'なので、' value'属性は 'null'、' true'と 'false'(' 0'と '1'ではなく)である必要があります –

+0

そうです!編集されました。 –

+0

そして、第3の '' Select "パラメータを削除してください。(' 'null''オプションは意味がありません) –