2014-01-12 3011 views
2

無論出於何種原因,我Html.DropDownListFor我的默認值是不工作:爲什麼我的DropDownListFor默認值無法正常工作?

@Html.DropDownListFor(model => model.DomainList, 
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId), 
    new { @class = "form-control" }) 

任何想法,爲什麼?

UPDATE

與下面的答案,我在我的代碼更新到以下幾點:

@Html.DropDownListFor(model => model.SelectedDomain, 
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SelectedDomain), 
    "Select a Domain", 
    new { @class = "form-control" }) 
+0

Model.DomainList中的值列表中的Model.SingleDomain.DomainId的值是什麼? – Jack

+0

是的。即使我輸入一個我知道存在的值而不是該變量,下拉列表也不會設置默認值。 – CIA

+1

此外,通常當您執行DropDownListFor時,它將用於int(用於存儲選定的值),而不是List本身。這意味着它應該看起來像這樣:@ Html.DropDownListFor(x => x.DomainId,....) – Jack

回答

6

試試這個:

在您的視圖模型,添加一個整數存儲所選的域編號:

public int SelectedDomainId { get; set; } 

Ch將您的DropDownListFor改爲:

@Html.DropDownListFor(model => model.SelectedDomainId, 
    new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId), 
    new { @class = "form-control" }) 

現在在您的回傳中,所選ID將被張貼在SelectedDomainId中。

或者,您也可以在單域對象添加到您的虛擬機(表示選擇哪一個):

public Domain SelectedDomain { get; set; } 

,改變你的DropDownListFor到:

@Html.DropDownListFor(model => model.SelectedDomain, 
     new SelectList(Model.DomainList, "DomainId", "Name", Model.SingleDomain.DomainId), 
     new { @class = "form-control" }) 

我通常使用的選擇ID,但我認爲要麼工作

這裏是另一個很好的例子:

MVC3 DropDownListFor - a simple example?

+1

謝謝。這解決了這個問題。 – CIA