ASP.NET MVC Redirect - PullRequest
       9

ASP.NET MVC Redirect

0 голосов
/ 28 октября 2011

Я работаю над одной из моих первых ASP MVC-программ на данный момент. Программа должна показать мне список товаров, а под ссылкой под названием товара должна быть возможность отредактировать товар. Пока проблем нет.

@model MVC3Demo.Product

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>
@using (Html.BeginForm("Save", "Product"))
{
<div>
    <input type="hidden" id="ID" name="ID" value="@Model.ID" />
    ProduktID @Model.ID
</div>
<div>
    Produktname <input id="Name" name="Name" type="text" value=@Model.Name />
</div>
<div>
    Preis <input id="Price" name="Price" type="text" value=@Model.Price />
</div>
<div>
    <input type="submit" value="Speichern"/>
</div>

}

Теперь я написал Save метод действия, который должен обновить мои данные:

    public ActionResult Save(Product p)
    {
        ProductRepository rep = new ProductRepository();
        rep.Update(p);
        return RedirectToAction("List");
    }

В «Списке» можно просмотреть все продукты со ссылкой для редактирования. Проблема в том, что если я нажимаю кнопку сохранения, он перенаправляет меня к старому списку, а не к обновленному. Я отладил свой проект, и я уверен, что метод update работает правильно и обновляет продукт.

Мое List действие:

@model IEnumerable<MVC3Demo.Product>

@{
    ViewBag.Title = "List";
}

<h2>List</h2>

<ul>
@foreach (MVC3Demo.Product p in Model)
{
    <li>@p.Name @Html.ActionLink("bearbeiten", "Edit", "Product", p, null)</li>  //new{ ID = p.id}
}
</ul>

Поскольку вы спросили, вот действие List:

    public ActionResult List()
    {
        ProductRepository rep = new ProductRepository();
        return View(rep.GetAll());
    }

Так в чем же может быть моя ошибка?

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Похоже, вы вызываете обновление, но на самом деле вы не отправляете саму транзакцию, есть ли в вашем репозитории SubmitChanges, AcceptChanges или Commit или что-то подобное?Как и в случае с DataTables, ваши изменения не вступят в силу (сохранятся в базе данных), пока вы не вызовете AcceptChanges.

0 голосов
/ 28 октября 2011

Попробуйте включить атрибут HttpPost при Save методе контроллера.

[HttpPost]
public ActionResult Save(Product p)
    {
        ProductRepository rep = new ProductRepository();
        rep.Update(p);
        return RedirectToAction("List");
    }
...