我的输入模型由NewForm组成,其中包含许多字段
public class NewForm
{
[Key]
public int Id { get; set; }
public string HeadForm { get; set; }
public List<Field> Fields { get; set; }
}
public class Field
{
public int Id { get; set; }
public bool Check { get; set; }
public string HeadField { get; set; }
}我想从基数中获取值并对其进行编辑,但Model.Fields.Count抛出异常。尽管显示了字符串"HeadForm“。不显示列表。EditPage:
@model EditFormApplication.Models.NewForm
@using (Html.BeginForm("Edit", "Home", FormMethod.Post))
{
@Html.TextBoxFor(model => model.HeadForm)
<h5>Fields:</h5><br>
@for ( var i = 0; i< Model.Fields.Count; i++) {
@Html.TextBoxFor(model => model.Fields[i].HeadField)
@Html.CheckBoxFor(model => model.Fields[i].Check)
}
<input type="button" value="Add Field" onclick="addField(this);">
<input type="submit"value="Save">
}例如,我按ID = 3键入数据。控制器:
public ActionResult CreateForm(NewForm model)
{
using (NewFormContext db = new NewFormContext())
{
db.NewForms.Add(model);
db.SaveChanges();
return RedirectToAction("Edit");
}
}
public ActionResult Edit()
{
using (NewFormContext db = new NewFormContext()) {
var model = db.NewForms.Find(3);
return this.View(model);
}
}优先使用代码和一对多
发布于 2019-02-18 09:44:08
当执行db.NewForms.Find()来分配您想要返回到视图中的模型时,听起来像Model.Fields属性仍然包含null,这表明EF还没有创建依赖集合。据我所知,您应该在entity类的无参数构造函数中添加集合实例定义:
public class NewForm
{
public NewForm()
{
// instantiate list here
Fields = new List<Field>();
}
[Key]
public int Id { get; set; }
public string HeadForm { get; set; }
public List<Field> Fields { get; set; }
}或者,如果您使用延迟加载,则将该属性标记为virtual,以便EF在必要时实例化集合:
public virtual List<Field> Fields { get; set; } 相关问题:
https://stackoverflow.com/questions/54730059
复制相似问题