2017-03-31 11 views
0

私はMVCを初め、簡単なことをしようとしていますが、それは私を逃しています。私は製品名のリストを表示するために、部分ビューでDropDownListForを使用しています。その部分は正常に動作します。私が問題を抱えているのは、DropDownListForの初期値を「Select one」と表示することです。DropDownListのデフォルトのテキストを設定するMVC

@Html.DropDownListFor(model => model.ProductId, new SelectList(ViewBag.ProductData, "ProductId", "Name"), "---Select one---", new { htmlAttributes = new { @id = "ProductName" } }); 

は、次のようにViewBagを設定し、コントローラは次のとおりです:

public ActionResult AddProduct(int quoteId, int quoteDetailId) 
     { 
      var items = db.Products.ToList(); 
      ViewBag.ProductData = items; 

      ViewData["QuoteId"] = quoteId; 
      ViewData["QuoteDetailId"] = quoteDetailId; 
      return PartialView("EditQuoteDetail", new QuoteDetail { QuoteId = quoteId, QuoteDetailId = quoteDetailId, ProductId = 1, ProductName = " ", Amount = 1, ListPrice = 0, Discount = 0, Price = 0 }); 
     } 

私は「いずれかを選択」、DropDownListForのドロップダウン矢印を打つ一度に表示され、次のように私が働いているコードがありますリストの先頭しかし、DropDownListForが最初に表示されると、最初の製品名が「Select one」ではなくボックスに表示されます。これをどうすれば解決できますか?どんな助けでも大歓迎です。

+2

あなたはおそらく、あなたの選択リストに有効な値は1〜 'ProductId'、の初期値を設定しています。これにより、モデルがビューにバインドされているときに一致するオプションが選択されます。 –

+2

'ProductId = 1'を省略し、デフォルトを使用し、ヌルラベルオプション(" Select one ")が選択されるようにします。なぜあなたのモデルにすでに入っているときに 'ViewData'の値を設定するのですか? –

+0

それはそれを修正しました。ありがとう!私はQuoteIdとQuoteDetailIdの値を設定する必要があると思ったのでViewDataを使用しました。 –

答えて

0

モデルにidプロパティの値を指定しないでください:

public ActionResult AddProduct(int quoteId, int quoteDetailId) 
{ 
    var items = db.Products.ToList(); 
    ViewBag.ProductData = items; 

    return PartialView("EditQuoteDetail", new QuoteDetail { QuoteId = quoteId, QuoteDetailId = quoteDetailId, ProductId = 0, ProductName = " ", Amount = 1, ListPrice = 0, Discount = 0, Price = 0 }); 
} 
関連する問題