2014-01-12 3101 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