.NET MVC: вызов RedirectToAction для передачи модели? - PullRequest
32 голосов
/ 24 февраля 2010

Я получил представление List.aspx, связанное с классом Kindergarten

В контроллере:

public ActionResult List(int Id)
{
  Kindergarten k = (from k1 in _kindergartensRepository.Kindergartens
                    where k1.Id == Id
                    select k1).First();

  return View(k);
}

Это работает.

Но это не

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(...)
{
  //...
  Kindergarten k = ...
  return RedirectToAction("List", k);
}

Как мне перенаправить на представление списка, передавая k в качестве модели?

Спасибо!

Ответы [ 4 ]

56 голосов
/ 24 февраля 2010

Я не верю, что ModelBinding существует при использовании RedirectToAction. Однако лучше всего использовать коллекцию TempData для хранения объекта и извлечения его в следующем действии.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(...)
{
  //...
  Kindergarten k = ...
  TempData["KG"] = k;
  return RedirectToAction("List");
}

В вашем списке действий

public ActionResult List()
{

   Kindergarten k = (Kindergarten)TempData["KG"];
   // I assume you need to do some stuff here with the object, 
   // otherwise this action would be a waste as you can do this in the Add Action
  return View(k);
}

Примечание. Коллекция TempData содержит объект только для одного последующего перенаправления. Как только вы сделаете какое-либо перенаправление из Add, TempData ["KG"] будет иметь значение null (если вы его не заполняете)

27 голосов
/ 24 февраля 2010

Я думаю, вам просто нужно вызвать просмотр как

return RedirectToAction («Список», новый {ID});

с идентификатором нужно заполнить детский сад.

18 голосов
/ 24 февраля 2010

Я не уверен, что вы хотите позвонить RedirectToAction, потому что это просто приведет к повторной установке k.

Я думаю, что вы хотите позвонить View и передать имя вида и вашу модель.

return View("List", k);
1 голос
/ 24 февраля 2010

Как сказал Брэндон, вы, вероятно, хотите вместо этого использовать return View("List", Id), но проблема в том, что вы передаете k, вашу модель, методу, который принимает int в качестве параметра.

Думайте о RedirectToAction как о вызове метода.

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