История действий MVC

#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 на противоположные.