我很难理解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()
?
答案 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/
上的这篇精彩文章