2011-03-20 78 views
5

在我的模型中,我有一个国家列表:Model.ListCountry。乡村类有一些字段: 标识,代码,ValueFR,ValueUSDropDownListFor ...选定的值

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

我尝试这样做:

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

不知道 ?

谢谢,

UPDATE1: 在数据库中,我保存的Id,但在该下拉为“选项值”我使用的代码,并作为显示fiels ValueFR或ValueUS取决于语言用户的

回答

16

为了预选在下拉列表中的值设置相应的属性值,这在你的控制器动作:

model.Record.Customer.Country = "FR"; 

至于下拉列表生成有关的两个字符串参数你是PAS唱歌到SelectList constructor表示分别对应于值和文本的模型的属性名称。所以我想它应该是更多这样的:

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

在这个例子中,我们使用的是Code财产在下拉列表中值和ValueFR财产为文本。因此,在这种情况下,您必须确保您将model.Record.Customer.Country属性设置为存在于列表中的Code,并且下拉列表将自动预选此项目。

另一种可能使用以下SelectList constructor它允许你指定一个选择的值作为4 参数:

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

见UPDATE1在我的岗位 – 2011-03-20 21:42:06

+0

@克里斯-I,如果使用'Id'为'选项值“,并且想要预先选择一个项目,请使用”CountryId“作为DropDownListFor助手的第一个参数,并在您的控制器操作中将此属性的值设置为您想要预先选择的相应国家/地区ID。还要注意,有两个属性'ValueFR'和'ValueUS'来处理本地化是一个不好的习惯。您应该只有一个属性,并且根据当前的语言设置,您的存储库将使用正确的值填充属性。如果明天你需要处理第三种语言会怎么样?你会修改你的所有代码吗? – 2011-03-20 21:44:30

+0

我知道不好的做法,只是温度。无论如何....下拉列表值仍然未被选中。 – 2011-03-20 21:57:10