2012-01-17 2 views
2

DropDownListを設定した場合、Text:"people names" (string)と値:studentID (int)が表示されます。このような私の見解で(myDDLは、コードビハインドviewbagに配置されたデータであると仮定した場合)HTML DropDownListの "optionLabel"のデフォルト値は何ですか?

 @Html.DropDownList("myDDL", (IEnumerable<SelectListItem>)ViewBag.myDDL, 
    "Select Stuff", new Dictionary<string,object>{ 
     {"class","dropdowns"},{"id","myDDL"}}) 

ドロップダウンリストの先頭に表示されるオプションのラベルである「セレクトスタッフ」の値とは何ですか?

値を選択しないと、すべてのデータを取得したいので、値を希望します。

ありがとうございます!

答えて

4

それが空だと、それは常にドロップダウンの最初のオプションですので、あなたがポストバックアクションで非NULL可能プロパティにバインドされていることを確認してください。

<select name="selectedValue"> 
    <option value="">Select Stuff</option> 
    ... 
</select> 

また、あなたのようにmyDDLを使用しているように見えますドロップダウンリストヘルパーの第1引数と第2引数の両方が間違っています。最初の引数は、選択された値を取得するために使用されるプロパティです。 2番目の値は使用可能な値で、IEnumerable<SelectListItem>でなければなりません。

だから、このようなものは、より多くの意味になるだろう:

@Html.DropDownList(
    "selctedValue", 
    (IEnumerable<SelectListItem>)ViewBag.myDDL, 
    "Select Stuff", 
    new { @class = "dropdowns", id = "myDDL" } 
) 

しかし、本当に意味をなさないと私はあなたをお勧めしますと、このViewBagを取り除くためにあるとビューモデルとの厳密に型指定されたバージョンを使用するだろうかこのヘルパー:

@model MyViewModel 
... 
@Html.DropDownListFor(
    x => x.SelectedValue, 
    Model.MyDdlItems, 
    "Select Stuff", 
    new { @class = "dropdowns", id = "myDDL" } 
) 
+1

値を与える方法はありますか? – EKet

+0

@EKet、いいえ、独自の 'DropDownList'ヘルパーを書かない限りはありません。ビルトインヘルパーは、このオプションのデフォルト値として空の文字列を使用し、これを変更することはできません。それは設計によるものです。実際に私があなたの提案したようにビューモデルを使用する場合は、これを変更する必要はありません。 –

+0

あなたの最後のメソッドが私のビューを型に制限しますが、どのような利点がありますか?私のビューに1つのモデルだけを使用したくない場合はどうすればいいですか? 1つのビューに2つのタイプを使用するべきではないと言っているようです。 – EKet

2

これは空の文字列です。 documentationカバー本(強調鉱山):

optionLabel

タイプ:System.String

デフォルト項目のテキスト。 このパラメータはnullでもかまいません。

0

あなたが実際に旅館値=「なし」/「ものを選ぶ」とidは= 0、それがあなたを助けるを取らない、あなたのドロップダウンリスト内のオブジェクトのリストに偽の値を追加してみてくださいすることができますユーザーがドロップダウンリストの値を選択できる偽の値を生成すると、バックエンドコードでその値を処理できるはずです。お役に立てれば。

関連する問題