Подтвердить что ты не робот

.NET MVC: вызов RedirectToAction, передающий модель?

Я получил представление 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 в качестве модели?

Спасибо!

4b9b3361

Ответ 1

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

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

с идентификатором необходимо заполнить Детский сад.

Ответ 2

Я не верю, что 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 (если вы не засете ее)

Ответ 3

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

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

return View("List", k);

Ответ 4

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

Вспомните RedirectToAction как вызов метода.