Я пытаюсь передать ReturnUrl
строку запроса на мою страницу входа. У меня есть частичное представление входа в систему (вроде окна входа в систему) и представление входа в систему. Прямо сейчас у меня есть следующая строка в моем частичном представлении:
using (Html.BeginForm("Login"
, "Account"
, new { returnUrl=HttpUtility.UrlEncode(
Request.QueryString["ReturnUrl"])
?? HttpUtility.UrlEncode(Request.Path)
}
, FormMethod.Post))
Когда я нажимаю кнопку отправки моего частичного просмотра (например, из
http://localhost:12345/Product/1234/Product1
),
Я буду перенаправлен на мою страницу входа со следующим URL:
http://localhost:12345/Account/Login?returnUrl=%2FProduct%2F1234%2FProduct1
Но если я войду в систему, я увижу ответ http 400, потому что страница возвращается к
http://localhost:12345/Account/%2fProduct%2f1234%2fproduct1
.
Кроме того, если я ввожу неверные учетные данные, я заставляю строку запроса returnUrl
снова кодироваться, таким образом каждый символ %
снова преобразуется в %25
!
Я должен упомянуть, если я вручную наберу
http://localhost:12345/Account/Login?returnUrl=/Product/1234/Product1
(без кодировки) и войдите, я успешно перенаправлен по указанному пути.
Думаю, мне не хватает чего-то очевидного. Но не мог узнать что.
Спасибо.