2016-12-30 8 views
0

私はEnumDropDownListForを使用して、enums、ofcourseでドロップダウンをレンダリングしています。EnumDropDownListFor選択タイトルを削除します。

@Html.EnumDropDownListFor(model => model.MyProperty, "Select", new { @class = "combobox form-control" })  

model.MyProperty値は、私が選択オプションとして表示したくないので、私は

​​

てみましたが、今、私は開いてドロップダウンすることはできません最初の項目としてSelectを、持っているドロップダウンはありませんまったく。

答えて

1

かもしれないが、あなたがまだあなたが信じているものを呼び出して、あなたのアールをチェックして、あなたのコードは、いくつかの他のEnumDropDownListForオーバーロードを呼び出すことが原因?
ドロップダウンにはオプションリストとしての列挙値が残るはずです。

あなたが代わりに試してください:ところで

<select name="MyProperty" id="MyProperty"> 
    <option value="FirstEnumValue">FirstEnumLabel</option> 
    <option value="SecondEnumValue">SecondEnumLabel</option> 
    ... 
</select> 

、ほとんどのブラウザでは、それはデフォルトで最初の非無効を選択します:

@Html.DropDownListFor(model => model.MyProperty, 
    EnumHelper.GetSelectList(typeof(YourEnum)), 
    new { @class = "combobox form-control" }) 

をあなたの結果のHTMLで、それは次のようになります。あなたがおそらく期待しているように空白のままにするのではなく、明示的にその値を無効な値に設定することで、JavaScriptでこれを克服することができます(enum値リストに関しては無効です)。

同時に、選択を義務付け(required属性)したい場合は、禁止されているものをhtml specと尋ねます。

select要素は、指定された必要な属性を持っている場合、 に指定された複数の属性を持ち、かつ1のdisplay sizeを持っていない、そして select要素はplaceholder label optionを持っている必要があります。

そしてスペックはとしてそれを定義しています。select要素が必要な属性を指定した場合

は、 指定された複数の属性を持っていない、とdisplay size 1のがあります。 の場合、選択要素のリスト のオプション(ある場合)の最初のオプション要素の値が空の文字列であり、そのオプション要素の親の ノードがselect要素(optgroup要素ではない)である場合、その オプションselect要素のプレースホルダラベルオプションです。

1

どの程度

@Html.EnumDropDownListFor(model => model.MyProperty, new { @class = "combobox form-control" }) 

MSDN

EDIT:

あなたは無効にオプションを作るためにjavascriptを使用して、選択オプションとして、デフォルトのテキストを作成したくない場合。

@Html.EnumDropDownListFor(model => model.MyProperty, "Select...", new { @class = "combobox form-control" }) 

ただし、SelectListItemに属性を追加する方法はないようです。文字列の代わりにnullを置く

<script> 
    document.getElementsByTagName("option")[0].disabled = true; 
</script> 
+0

いいえ、開けません。 – user1765862

+0

** model.MyProperty **に値がない場合、何を表示しますか? – Davis

+0

コースの列挙値。しかし、選択タイトルなし。 – user1765862

関連する問題