Asp.net mvc 编辑页面Post方法中视图模型的处理
我正在尝试修改“活动编辑”页面,以便能够包含更多信息。 为了简化,我有以下几点 模型 看法 现在所有内容都显示正确,但我无法更新信息。 db.SaveChanges处出错 Store update、insert或delete语句影响了意外的行数0。自加载实体后,实体可能已被修改或删除 我不知道如何更新控制器部分的代码。有什么想法吗?您可能绑定到了null。尝试:Asp.net mvc 编辑页面Post方法中视图模型的处理,asp.net-mvc,viewmodel,Asp.net Mvc,Viewmodel,我正在尝试修改“活动编辑”页面,以便能够包含更多信息。 为了简化,我有以下几点 模型 看法 现在所有内容都显示正确,但我无法更新信息。 db.SaveChanges处出错 Store update、insert或delete语句影响了意外的行数0。自加载实体后,实体可能已被修改或删除 我不知道如何更新控制器部分的代码。有什么想法吗?您可能绑定到了null。尝试: 您需要修改类活动以指定可绑定属性,如下所示: [Bind(Include = "ActNo,ActName")] public cla
您需要修改类活动以指定可绑定属性,如下所示:
[Bind(Include = "ActNo,ActName")]
public class Activity
{
public int ActNo { get; set; }
public string ActName { get; set; }
public virtual ICollection<Attendance> Attendances { get; set; }
}
public class ActivityEditView
{
public Activity SelectedActivity { get; set; }
public Student Students { get; set; }
}
@model <projectname>.ViewModels.ActivityEditView
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.SelectedActivity.ActNo)
<div class="form-group">
@Html.LabelFor(model => model.SelectedActivity.ActName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.SelectedActivity.ActName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.SelectedActivity.ActName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ActNo,ActName")] Activity activity)
{
if (ModelState.IsValid)
{
db.Entry(activity).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(activity);
}
[Bind(Prefix = "SelectedActivity")]Activity activity
[Bind(Include = "ActNo,ActName")]
public class Activity
{
public int ActNo { get; set; }
public string ActName { get; set; }
public virtual ICollection<Attendance> Attendances { get; set; }
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ActivityEditView activityEdit)
{
if (ModelState.IsValid)
{
db.Entry(activityEdit.SelectedActivity).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(activity);
}