对象:
public class CountryLanguage
{
public string Country { get; set; }
public string Language { get; set; }
}
视图模型:
public class CreateComplexObjectViewModel
{
IList<CountryLanguage> SelectedCountryLanguages { get; set; }
}
查看:
@model CreateComplexObjectViewModel
@{
IEnumerable<CountryLanguage> allCountryLanguages = GetAllFromConfigFile();
}
@Html.ListBoxFor(model => model.SelectedCountryLanguages,
allCountryLanguages.Select(cl => new SelectListItem
{
Text = $"{cl.Country} {cl.Language}",
Value = $"{cl.Country}_{cl.Language}"
}))
当我按原样提交此表单时,我会看到以下参数已发布:
SelectedCountryLanguages=US_en&SelectedCountryLanguages=US_en-US
无法绑定到CountryLanguage
对象。如果我将所有内容都交换到string
s然后一切正常,那么我必须进行字符串解析才能获得单独的值
var selections = new List<CountryLanguage>();
foreach (string countryLanguage in model.SelectedCountryLanguages)
{
string[] parts = countryLanguage.Split("_");
selections.Add(new CountryLanguage
{
Country = parts[0],
Language = parts[1]
});
}
有没有办法可以绑定CountryLanguage
对象而无需进行额外的处理?
答案 0 :(得分:0)
使用
指定您的名字参数@Html.ListBox("CountryLanguage", ...)
而不是ListBoxFor。
或创建自定义html标记,而不是帮助程序。