我的观点不会与我在MVC中的模型绑定

时间:2012-05-09 01:41:11

标签: asp.net-mvc asp.net-mvc-3

我有以下viewmodel:

 public class CityViewModel
    {
        public CityViewModel() {     
            CityDetails = Enumerable.Range(1,2).Select(x => new CityDetail()).ToList(); 
        } 

        public City City { get; set; }
        public IList<CityDetail> CityDetails { get; set; }

        public class CityDetail
        {
            public CityDetail() {
                Correct = true;
            }
            public bool   Correct { get; set; }
        }

在我看来,我有以下内容:

        @foreach (int index in Enumerable.Range(0, Model.CityDetails.Count()))
        {
        <input type="hidden" name="CityDetails[@index]_Correct)" value="false" />
        <input type="checkbox" id="CityValid" name="CityDetails[@index]_Correct" value='@Model.CityDetails[index].Correct' />

我无法从名为“正确”字段的视图到模型的任何绑定,所以我想知道我使用的命名。有没有人知道可能出现什么问题?

2 个答案:

答案 0 :(得分:2)

映射集合的简单方法是使用索引器。使用以下代码段

 @for (int i = 0; i < Model.CityDetails.Count; i++)
 {
    @Html.EditorFor(x => Model.CityDetails[i].Correct)
 }

答案 1 :(得分:1)

您的视图无需像这样。创建一个编辑器模板,然后使用Html.EditorFor(x =&gt; x.CityDetails)。这将处理枚举集合并正确地写出元素,以便它们映射回列表。