Asp.net mvc 我的视图不会与MVC中的模型绑定

Asp.net mvc 我的视图不会与MVC中的模型绑定,asp.net-mvc,asp.net-mvc-3,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

我有以下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' />

对于名为Correct的字段,我无法从视图获得任何到模型的绑定,因此我想知道我使用的命名。有人知道哪里可能出了问题吗?

你的观点没有必要这样。创建一个编辑器模板,然后使用Html.EditorForx=>x.CityDetails。这将处理枚举集合并正确写出元素,以便它们映射回列表中。

视图不需要这样。创建一个编辑器模板,然后使用Html.EditorForx=>x.CityDetails。这将处理枚举集合并正确写出元素,以便它们映射回列表。

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

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

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

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

你需要包括更多的信息。您的@model语句是什么样子的,为什么要用相同的名称命名这两个模型?控制器呢。。你可能会遗漏一些东西ThePublic Action Result Createstring pk,string rk{var model=new CityViewModel;只是检查一下……你正在将模型传递给视图,对吗?返回Viewmodel;name=CityDetails[@index]_Correct应该是name=CityDetails[@index].correct您需要包含更多信息。您的@model语句是什么样子的,为什么要用相同的名称命名这两个模型?控制器呢..您可能缺少一些公共操作结果Createstring pk,string rk{var model=new CityViewModel;正在检查…您正在将模型传递给视图,对吗?返回Viewmodel;name=CityDetails[@index]\u正确的应该是name=CityDetails[@index]。正确吗