在MVC中,我有一个List<CityModel>
,其中包含CityID,City,StateID,State,CountryID,Country。通过使用以下代码,我可以获得引用列表:
IEnumerable<SelectListItem> objCityList;
IEnumerable<SelectListItem> objStateList;
IEnumerable<SelectListItem> objCountryList;
using (CityModel objCityModel = new CityModel())
{
List<CityModel> cityList = objCityModel.getCityList();
objCityList = cityList.AsEnumerable().Select(m => new SelectListItem() {
Text = m.City,
Value = Convert.ToString(m.CityID)
});
}
如何从cityList
答案 0 :(得分:0)
您只需使用一个列表,但更改组合框中显示的属性。所选项目与列表中的对象类型相同。
在视图模型中,只显示CityList
属性,然后将组合框ItemsSource
绑定到该属性。
你可以在XAML中完成所有这些,例如:
<ComboBox ItemsSource="{Binding CityList}"
DisplayMemberPath="City"
SelectedItem={Binding SelectedCity, Mode=TwoWay>
</ComboBox>
<ComboBox ItemsSource="{Binding CityList}"
DisplayMemberPath="County"
SelectedItem={Binding SelectedCounty, Mode=TwoWay>
</ComboBox>
<ComboBox ItemsSource="{Binding CityList}"
DisplayMemberPath="State"
SelectedItem={Binding SelectedState, Mode=TwoWay>
</ComboBox>
答案 1 :(得分:0)
据我了解,您想从“城市”列表中提取州和国家/地区列表。要做到这一点,你可以使用这样的东西
objStateList = cityList.GroupBy(item => item.StateID, (key, items) => new SelectListItem
{
Text = items.First().State,
Value = Convert.ToString(key)
});
objCountryList = cityList.GroupBy(item => item.CountryID, (key, items) => new SelectListItem
{
Text = items.First().Country,
Value = Convert.ToString(key)
});