linq to sql вопрос, почему мое изменение не сохраняется? - PullRequest
0 голосов
/ 16 июля 2011

это мой первый проект 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);
        }
    }

после того, как я нажимаю кнопку «Редактировать», он возвращает меня на страницу списка, и изменения не сохраняются. все еще старые значения.

Ответы [ 3 ]

3 голосов
/ 16 июля 2011

Вам нужно сначала получить 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); может отличаться в зависимости от вашей реализации.

2 голосов
/ 16 июля 2011
tut.EditDate = DateTime.Now;
tutContext.SubmitChanges();
return RedirectToAction("List");

Ваш учебный объект еще не управляется контекстом БД.таким образом, контекст не сохранил изменение объекта, когда вы изменяете объект tut и вызываете tutContext.SubmitChanges ().

Прежде всего, вы должны найти учебный объект из контекста.

после того, как вы получите объект tuts из контекста tuts, этот объект tuts управляется контекстом db.затем вы можете изменить объект tut и отправить изменения.

Tutorial tut = ctx.Tutorials.Single(d => d.TutorialID == tut.ID);
tut.EditDate = DateTime.Now;
ctx.SubmitChanges();

Это необходимо в [HttpPost]

0 голосов
/ 16 июля 2011

Когда вы отлаживаете, достигаете ли вы действия Post в контроллере?Убедитесь, что для действия формы установлено значение POST, а не GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...