繁体   English   中英

是否可以在ASP.NET MVC中创建强类型的复杂视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM