0

Есть несколько вопросов о SO о перенаправлении на действие в другой области, но никто не отвечает на более конкретный вопрос, который у меня есть.Перенаправление на действие в другой области, которая принимает модель

Скажем, у меня есть такое действие, как это:

public virtual ActionResult ActioName(ViewModel model) 
{ 
    return View(model); 
} 

Если не будет параметр модели, вы могли бы сделать следующее для перенаправления этого действия из другой области:

return RedirectToAction("ActioName", "ControllerName", new { Area = "" }); 

Я попытался включить модель, а также область несколькими способами, но не работал. Мне нужен способ включения названия области и модели. Спасибо.

EDIT: TempData не является ответом, я не хочу изменять целевой контроллер.

+1

@markpsmith Это аналогичный вопрос, с добавленной морщиной областей переключения. В этом случае ответ, предоставленный для дубликата, не работает здесь. – B2K

+0

Вы пробовали 'return RedirectToAction (« ActioName »,« ControllerName », new {Area =" ", model = model})'? – B2K

+0

Я в замешательстве. Эти ответы не полностью решают этот вопрос, что добавляет «в другую область», что не обсуждалось ранее. Различие имеет значение, и я считаю, квалифицирует это как новый вопрос, а не дубликат. – B2K

ответ

0

Вместо этого используйте RedirectToRoute, где namedRoute предоставляет имя и действие контроллера вместо того, чтобы извлекать из URL-адреса, как это делает маршрут по умолчанию.

return RedirectToRoute("namedRoute",model); 

Или возможно:

return RedirectToRoute("namedRoute",new { model: model }); 

Или перенаправить в область

return RedirectToRoute("Area_namedRoute",model); 

Просто надо знать, что это вызовет запрос GET вместо поста. Это имеет несколько ограничений, чтобы быть в курсе:

  1. Браузеры имеют ограничения на длину URL, IE является более трудным здесь
  2. Действия методы с [HttpPost] атрибуты не могут быть вызваны таким образом
  3. Вложение больших объемов данных в URL-адрес представляет собой угрозу безопасности. Что произойдет, если пользователь поделится своей веб-страницей с другом.
  4. Запросы считаются поисковыми системами свободными от побочных эффектов, они считаются доступными только для чтения.

Это, как говорится, см. ASP.NET MVC: RedirectToAction with parameters to POST Action, если вам нужно разместить сообщение, а не получать.

Смежные вопросы