2011-11-11 28 views
4

コントローラでは動作しません:編集Html.DropDownListと@class属性

ViewBag.Category = new SelectList(this.service.GetAllCategories(), product.Category); 

私は、ID +名を使用していませんよ。 GetAllCategories()はいくつかのint値だけを返します。

私はビューで使用します。

@Html.DropDownList("Category", String.Empty) 

すべてが動作します。編集はOKで、DropDownListは選択した値を表示します。 HTML結果:

<select id="Category" name="Category"> 
<option value=""></option> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
<option>4</option> 
<option selected="selected">5</option> 
... 
</select> 

しかし、私はCSSを使用する必要が@classので、私はこのコードを使用:

@Html.DropDownList("Category", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" }) 

HTML結果:

<select class="anything" id="Category" name="Category"> 
<option>1</option> 
<option>2</option> 
<option>3</option> 
<option>4</option> 
<option>5</option> 
... 
</select> 

残念ながら、編集はまだ私ができる(作品私が選択した値を保存します)、DropDownListはデータベースに保存された値ではなく、デフォルト値を表示し始めます

あなたは何か問題があると思いますか?

更新 もっと正確になるように更新しました。

方法GetAllCategoriesは次のようになります。私はあなたのテーブルから考える

public List<int> GetAllCategories() 
     { 
      List<int> categories = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; 

      return categories; 
     } 

答えて

6

非常に興味深いHtml.DropDownList作品:
あなたはそれが提供するプロパティ名に基づいてViewData/ViewBagから選択するための値を検索します

@Html.DropDownList("Category", String.Empty) 

選択リストを提供していない場合は、次のCategory
しかし、あなたが選択リストを提供する場合、それは当然のことながら、リストの代わりに、デフォルト値が含まれます提供プロパティ名Categoryに基づいてViewData/ViewBagでデフォルト選択した項目を探します。

@Html.DropDownList("CategoryDD", (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" })

@Html.DropDownList("Category", null, new { @class = "anything" })

それとも
ではなくViewBagプロパティ名Categoryの別の名前を使用してください:

は、選択リストを提供しないでください:あなたは2つのオプションがあり、これを修正するには

+0

あなたは男です。私は完全にnull可能性を見過ごした(それは "コードブレンドネス"のようなものでなければならない;-)。 @ Html.DropDownList( "Category"、null、new {@class = "anything"})は問題を解決します。 – nubm

0
SelectList typelist = new SelectList(this.service.GetAllCategories(), "ProductID", "ProductName", product.Category); 
ViewBag.Category=typelist; 

デフォルト値「商品コード」とテキスト「商品名」またはあなたが使用するものをsuplyする必要があると表示したいですこの結果に対してリストを生成することができます。

あなたの問題は正確にはわかりませんが、おそらく解決するかもしれません。

+0

カテゴリはint値で、dbに保存されます。それはFKではない。 – nubm

+0

リストに値とテキストの値を指定する必要があると思います。そうしないと、おそらくリストに項目がありません。 –

0

htmlヘルパーのドロップダウンリストを使用できます。ビューに必要な「モデル」が必要であることに注意してください。

@Html.DropDownListFor(model => model.savedID, 
    (IEnumerable<SelectListItem>)ViewBag.Category, new { @class = "anything" }) 
+0

これを試しましたが、動作に変更はありません。 – nubm

関連する問題