В настоящее время у меня есть ссылка для входа в приложение, которая выглядит примерно так:
<a href="/login?ReturnUrl=" + <%= Request.RawUrl %>>Login</a>
Я хочу обработать команду POST на странице входа в действие контроллера ниже:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string returnUrl)
{
// Authenticate user
return Redirect(returnUrl);
}
Проблема заключается в том, что RawUrl - это что-то с несколькими параметрами url, такими как "somepage? param1 = 1 & param2 = 2 & param3 = 3", тогда возвращаемый url, который передается в действие Login, усекается после первого амперсанда: "somepage? param1 = 1".
Я пробовал UrlEncoding RawUrl, но, похоже, имеет значение. Кажется, что инфраструктура ASP.NET MVC здесь UrlDecoding params url, прежде чем сопоставлять их с параметрами действия контроллера, что заканчивает отмену дополнительных параметров url, которые я хочу увидеть в моем параметре returnUrl.
Есть ли способ обойти это? Я знаю, что могу просто использовать Request.Path и проанализировать нужные мне значения, но я подумал, что сначала посмотрю, был ли более чистый подход.