2017-03-31 4 views
0

Ich bin neu in MVC, und versuche etwas zu tun, das einfach sein sollte, aber es entzieht sich mir. Ich verwende eine DropDownListFor in einer Teilansicht, um eine Liste von Produktnamen anzuzeigen. Dieser Teil funktioniert gut. Worauf ich Probleme habe, ist den Anfangswert von DropDownListFor festzulegen, um "Select one" anzuzeigen. Der Code mit denen ich arbeite ist wie folgt:Einstellung DropDownListFor Standardtext MVC

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

Die Steuerung, die die ViewBag setzt sich wie folgt:

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 }); 
     } 

Sobald ich auf den Dropdown-Pfeil traf auf dem DropDownListFor „Wählen“ erscheint der Anfang der Liste. Wenn DropDownListFor zum ersten Mal angezeigt wird, wird der erste Produktname in der Box anstelle von "Select one" angezeigt. Wie kann ich das beheben? Jede Hilfe würde sehr geschätzt werden.

+2

Sie den Anfangswert von 'ProductId' auf 1 setzen, die wahrscheinlich ein gültiger Wert in Ihrer Auswahlliste ist. Dadurch wird die Übereinstimmungsoption ausgewählt, wenn das Modell in der Ansicht gebunden ist. –

+2

"ProductId = 1" einfach weglassen, damit die Standardoption und die Option für die Nullmarke ("Wählen Sie eine") ausgewählt wird. Und warum setzen Sie 'ViewData'-Werte, wenn sie bereits in Ihrem Modell sind? –

+0

Das hat es behoben. Vielen Dank! Ich habe die ViewData verwendet, weil ich dachte, ich müsste die Werte von QuoteId und QuoteDetailId setzen. –

Antwort

0

Sie einen Wert für die ID-Eigenschaft in Ihrem Modell nicht angeben:

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 }); 
} 
Verwandte Themen