这是我的第一个mvc 3项目,我正在使用linq to sql。
public ActionResult Edit(int ID)
{
try
{
Tutorial tut = reposi.Tutorials.Single(d => d.TutorialID == ID);
return View(tut);
}
catch
{
return RedirectToAction("List");
}
}
[HttpPost]
public ActionResult Edit(Tutorial tut)
{
if (ModelState.IsValid)
{
//tut.TutorialID = ID;
tut.EditDate = DateTime.Now;
tutContext.SubmitChanges();
return RedirectToAction("List");
}
else
{
return View(tut);
}
}
点击“编辑”按钮后,它会将我带回列表页面,并且不会保存更改。仍旧的价值观。
答案 0 :(得分:3)
您需要先从数据库中获取Tutorial
,然后进行更改,然后SubmitChanges()
。
[HttpPost]
public ActionResult Edit(Tutorial tut)
{
if (ModelState.IsValid)
{
Tutorial t = tutContext.get(tut.Id);
//tut.TutorialID = ID;
t.EditDate = DateTime.Now;
tutContext.SubmitChanges();
return RedirectToAction("List");
}
else
{
return View(tut);
}
}
注意,根据您的实施情况,您的tutContext.get(tut.Id);
可能会有所不同。
答案 1 :(得分:2)
tut.EditDate = DateTime.Now;
tutContext.SubmitChanges();
return RedirectToAction("List");
您的教程对象尚未由db context管理。因此,当您更改tut对象并调用tutContext.SubmitChanges()时,上下文不会保存对象更改。
首先,您必须从上下文中查找教程对象。
Tutorial tut = ctx.Tutorials.Single(d => d.TutorialID == ID);
从tuts上下文获取tuts对象后,tuts对象由db上下文管理。然后你可以修改tut对象并提交更改。
Tutorial tut = ctx.Tutorials.Single(d => d.TutorialID == tut.ID);
tut.EditDate = DateTime.Now;
ctx.SubmitChanges();
您需要[HttpPost]
答案 2 :(得分:0)
调试时,是否到达控制器中的Post操作?确保您的表单操作设置为POST而不是GET。