我有一个视图模型(IntakeSampleViewModel),其中包含EF6实体(Intake)以及其他属性。这种模式在过去非常有效。在将数据移入或移出数据库时,消除将数据从一个类复制到另一个类。
public IntakeSampleViewModel()
{
myIntake = new Intake();
myRequests = new List<int>();
}
在这种情况下,它在我创建新的Intake对象时起作用。方法签名看起来像这样。
[HttpPost]
public ActionResult Create(IntakeSampleViewModel inModel)
在这个方法中我有这一行
cldb.Intakes.Add(inModel.myIntake);
一切都很好 除了我想编辑的时候。这是方法签名。
[HttpPost]
public ActionResult Edit(IntakeSampleViewModel inModel)
我尝试做的第一件事就是这个。我收到一条错误,指出myIntake为空。调试时确实是空的。
cldb.Intakes.Attach(inModel.myIntake);
在我的编辑视图页面中,我有这一行。
@Html.HiddenFor(model => model.myIntake)
我在Java脚本中组合了一个小测试以测试null,但它返回false。
TEST = function () {
var temp = $('#myIntake').val();
alert(temp === null);
}
所以我相信myIntake在视图页面中不是null,但由于某种原因,它不会被“附加”到提交上的IntakeSampleViewModel。任何人都可以提出尝试吗? 干杯 鲍勃