DropDownListFor ...选中的值

Kri*_*s-I 5 asp.net-mvc asp.net-mvc-3

在我的模型中,我有一个国家列表:Model.ListCountry.Country类有一些字段:Id,Code,ValueFR,ValueUS

在我的模型中,我有一个客户,这个客户有一个国家: Model.Customer.Country

我试过这个:

@Html.DropDownListFor(x => x.Record.Customer.Country, new SelectList(Model.ListCountry, "Code", "FR"), new { id = "lbCountry" })
Run Code Online (Sandbox Code Playgroud)

不知道 ?

谢谢,

Update1:​​在数据库中,我保存了Id,但在下拉列表中作为"选项值"我使用代码,并且显示根据语言用户fiels ValueFR或ValueUS

Dar*_*rov 16

要在下拉列表中预选值,请在控制器操作中将相应的属性设置为此值:

model.Record.Customer.Country = "FR";
Run Code Online (Sandbox Code Playgroud)

就下拉列表生成而言,传递给SelectList构造函数的两个字符串参数表示分别对应于Value和Text的模型的属性名称.所以我想它应该更像这样:

@Html.DropDownListFor(
    x => x.Record.Customer.Country, 
    new SelectList(Model.ListCountry, "Code", "ValueFR"), 
    new { id = "lbCountry" }
)
Run Code Online (Sandbox Code Playgroud)

在此示例中,我们将Code属性用作下拉列表中的值,将ValueFR属性用作Text.因此,在这种情况下,您必须确保将model.Record.Customer.Country属性设置Code为列表中存在的属性,并且下拉列表将自动预选该项.

另一种可能性使用以下SelectList构造函数,它允许您将选定的值指定为 4 参数:

@Html.DropDownListFor(
    x => x.Record.Customer.Country, 
    new SelectList(Model.ListCountry, "Code", "ValueFR", "FR"), 
    new { id = "lbCountry" }
)
Run Code Online (Sandbox Code Playgroud)