MVC更新IList<>表格

时间:2015-07-26 00:08:59

标签: c# asp.net asp.net-mvc list

我很难理解ASP.NET MVC(5.2)C#和Entitiy Framework编码我应该如何处理这项任务。

我的模型看起来像这样:

public class CatsViewModel
{
    public CatRateModel CatRateModel { get; set; }
    public IList<CatBreedList> CatBreedList { get; set; }
}

public class CatRateModel
{
    public int CatRateModelId { get; set; }
    public decimal CostToFix1 { get; set; }
    public decimal CostToFix2 { get; set; }
    public IList<RatesCatBreeds> RatesCatBreeds { get; set; }
}

public class CatBreedModel
{
    public int CatBreedModelId { get; set; }
    public int CatBreed { get; set; }
}

public class CatBreedList
{
    public int BreedId { get; set; }
    public int Breed { get; set;}
}

public class RatesCatBreeds
{
    public int RatesCatBreedsId { get; set; }
    public CatBreedModel CatBreedModel { get; set; }
    public decimal CatBreedRate { get; set; }
}

使用包含表单的视图,我正在尝试提供一个页面,用户可以在其中更新CatBreedModel中包含所有品种的值。表中有几个不同的品种位于CatBreedModel上下文中。

品种列表在控制器中填充如下:

CatsContext db = new CatsContext();

CatViewModel vm = new CatViewModel()
{
    CatRateModel = (from c in db.CatRateModel
                    select c
                    ).FirstOrDefault,
    CatBreedList = (from cb in db.CatBreeds
                    select new CatBreedList
                    {
                        BreedId = cb.CatBreedId,
                        Breed = cb.CatBreed
                    }).ToList()
};

vm通过return View(vm);

传递到视图中

我的观点如下:

@Html.EditorFor(model => model.CatRateModel.CostToFix1)
@Html.EditorFor(model => model.CatRateModel.CostToFix2)
@foreach(var CatBreed in Model.CatBreeds)
{
    //How do I put an editor here for each breed in the list?!
}

如何为列表中返回的每只猫品种显示@Html.EditorFor()

1 个答案:

答案 0 :(得分:2)

您可以使用for循环来使模型绑定在回发时起作用,例如

@for (int i = 0; i < Model.CatBreeds.Count; i++)
{
    @Html.EditorFor(x => Model.CatBreeds[i].CatBreed)
    @Html.HiddenFor(x => Model.CatBreeds[i].CatBreedModelId)
}

回发后,在您的控制器中,您的CatBreeds应该使用表单中的数据填充(通过模型绑定)。

额外注意

使用for循环而不是foreach循环的原因是因为创建模型绑定的索引才能工作。

有关详细信息,请查看列表绑定http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

上的这篇精彩文章