[英]Is it possible to create a strongly-typed complex view in ASP.NET MVC
宾语:
public class CountryLanguage
{
public string Country { get; set; }
public string Language { get; set; }
}
ViewModel:
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
对象而不必执行此附加处理?
使用指定名称参数
@Html.ListBox("CountryLanguage", ...)
而不是ListBoxFor。
或创建一个自定义html标记,而不是帮助器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.