2016-05-09 5 views
0

Я хочу использовать перенаправление к запрашиваемому URL, к которому пользователь хотел получить доступ после входа в систему, но так или иначе returnUrl всегда имеет значение null. (Я сделал исследование по этой теме в течение получаса и не нашел решение работает для меня.)MVC QueryString - пустая коллекция

Я отлажена мнение Войти моего приложения, и я пытаюсь получить ReturnUrl с

new { ReturnUrl = Request.QueryString["ReturnUrl"] } 

внутри мой @using() бирка. Я видел, что QueryString - пустая коллекция, и я даже пытался использовать ее без QueryString или просто с ViewBag.ReturnUrl, но ни тот, ни другой не работал для меня.

Контроллер имеет правильные параметры и перенаправляет его через RedirectToLocal(returnUrl), но это не имеет значения, если returnUrl равно null.

+0

Что такое URL? Если 'Request.QueryString [" ReturnUrl "]' пуст, то, похоже, следует, что в строке запроса нет значения 'ReturnUrl'. – David

+0

'Request.QueryString [" ReturnUrl "]' внутри вашей страницы просмотра будет пустым. его доступно в контроллере –

+0

Если вы используете 'FormsAuthentication', а все остальные страницы защищены логином, то запрошенная страница будет автоматически добавлена ​​к' ReturnUrl', если вы ищете страницу, отличную от Login –

ответ

0

Во всех своих методах действий, используйте этот код

RedirectToAction("Login", "ControllerName", new { returnUrl = Request.Url.AbsolutePath }); 

В вашем Вход метод действия используют

public ActionResult Login(LoginViewModel model, string returnUrl){//code} 
+0

. Это исправило это для меня, спасибо! – Zumarta

0

Попробуйте

public ActionResult FirstAction() 
    { 
     return RedirectToAction("SecondAction", 
      new { test = Request.Url.ToString() }); 
    } 

    public ActionResult SecondAction() 
    { 
     return Redirect(Request.QueryString["test"]); 
    } 
Смежные вопросы