2015-01-14 5 views
0

Я пишу простую веб-страницу MVC. Я буду использовать очень ограниченное число пользователей, поэтому мне не нужно, и я не хочу заботиться о многих стандартах.Перенаправление обратно без потери параметров.

У меня есть несколько контроллеров, перечисляющих некоторые объекты. Пользователь может фильтровать его, может перейти на другие страницы. Все это добавляет параметры, т. Е. ?site=3&id_gt=14. Это Index действие контроллера.

В этом списке есть некоторые действия, которые я обрабатываю, используя POST. Например, может быть действие Delete. Внутри кода Delete действия в контроллере я обработку запроса и на и я перенаправляет обратно Index действия:

public class MyController : Controller 
{ 
    public ActionResult Index(/* some parameters*/) 
    { 
     ... 
    } 

    [HttpPost] 
    public ActionResult Delete(/* some model*/) 
    { 
     //deleting code 
     return RedirectToAction("Index"); 
    } 
} 

Он отлично работает, но я теряю GET параметры из Index. Есть ли простой способ вернуть sth из контроллера Delete, который сообщил браузеру, что он должен перезагрузить текущую страницу всеми параметрами GET?

ответ

0

я решил его простым способом:

return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri);

Он получает url из запроса и перенаправить обратно к нему со всеми GET параметрами.

0

При вызове RedirectToAction() вы можете использовать перегрузку RedirectToAction( string actionName, Object routeValues ), чтобы добавить свои параметры как routeValues ​​в анонимный объект.

E.G.

return RedirectToAction("Index", new{Parameter1 = (somevalue), Parameter2 = (somevalue)}); 
1

Chris Redhead является правильным. Вы также можете использовать коллекцию TempData, которая сохраняет данные через перенаправление, но внутренне, а не в строке запроса. Он по существу использует сеанс под капотом, но не сохраняет значение для более чем 1 перенаправления.

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