#model-view-controller #action
#model-view-controller #Экшен
Вопрос:
У меня есть два действия, в которых перечислены элементы. Index() выводит список всех элементов, а Filtered (строка foo) фильтрует список элементов на основе foo . Когда пользователь создает новый элемент, я хочу иметь возможность перенаправлять их обратно либо в Index (), либо в Filtered (string foo) на основе того, где они были раньше.
Как я могу это сделать или переработать свои действия, чтобы заставить это работать?
Ответ №1:
Вы могли бы изменить свой ActionResult, чтобы он принимал строку, содержащую URL-путь, с которого приходит пользователь.
Что-то вроде этого:
[HttpPost]
public ActionResult CreateFoo(Blah model, string returnUrl)
{
// Do something here
if (!String.IsNullOrEmpty(returnUrl)) // As long as a return URL was passed
{
return Redirect(returnUrl); // Return them to this URL
}
else
{
return RedirectToAction("Index", "Home"); // Otherwise Go Home
}
}
У меня нет большого опыта с ASP.NET MVC таким образом, мог бы быть лучший встроенный способ справиться с этим. Поиск в Google для ‘asp.net перенаправление mvc на requestor’ может привести к чему-то более полезному, это, по сути, то, что вы хотите, — перенаправить обратно на запрашивающий маршрут.
Комментарии:
1. Это единственная идея, которая у меня тоже была, но я надеялся, что я что-то упустил или кто-то с большим опытом знает лучший способ обойти это. Спасибо за сообщение, и если я больше ничего не выясню, я вернусь и отмечу это как ответ.
2. Похоже, что это был бы обычный запрос, который обрабатывался бы платформой. Также не уверен, что мне нравится использование отрицания перед вызовом isnullorempty. Я думаю, что я бы отказался от этого и просто изменил инструкции if / else на противоположные.