У меня есть страница входа. В моем файле web.config я настроил loginUrl так, что если пользователь пытается перейти на страницу «Авторизованные» и не авторизован, он будет перенаправлен на страницу входа.
Теперь я заметил, когда это происходит, и пользователь перенаправляется со страницы «Авторизованный», а URL-адрес страницы, с которой он перенаправляется, добавляется к URL-адресу входа в систему.
Таким образом, когда они войдут в систему, я смогу использовать их, чтобы отправить их обратно на страницу, на которую они тоже пытались попасть.
Так вот как будет выглядеть URL:
http://localhost:2505/CMS_Account/LogOn?ReturnUrl=%2fCMS_Home%2fIndex
Поэтому я пытаюсь захватить часть строки запроса ReturnUrl в качестве параметра в моем представлении.
Но я не могу понять, что это заняло работу.
Итак, я узнал, изменил ли я свою форму для входа в систему:
<% using (Html.BeginForm()) ........
Тогда я могу по какой-то причине захватить ReturnURl без проблем.
Однако, как у меня это сейчас, у меня есть это:
<% using (Html.BeginForm("Login","Authentication",FormMethod.Post,new { id = "frm_Login"})) .....
Как только я пытаюсь передать параметры в BeginForm, он прекращает захват ReturnUrl.
Я не знаю, почему это останавливается. Некоторые люди говорят, что это потому, что я использую маршрут по умолчанию, и почему-то, если вы ничего не добавляете в существа, он волшебным образом может определить ReturnUrl с URL-адресом по умолчанию.
Как только вы помещаете что-то в BeginForm, оно кажется немым, и вам нужно указать ему маршрут, чтобы сказать, что делать.
Хотя я не знаю, как написать этот маршрут. Я попробовал довольно много разных комбинаций, и все они потерпели неудачу, и все, кто говорит мне правильный маршрут, никогда не говорят мне, как он должен выглядеть.
Так что я больше не знаю, что попробовать.
Что я пробовал
routes.MapRoute(
"CMS_Account", // Route name
"CMS_Account/{action}/{ReturnUrl}", // URL with parameters
new { controller = "CMS_Account", action = "LogOn",} // Parameter defaults
);
routes.MapRoute(
"CMS_Account", // Route name
"CMS_Account/{action}/{ReturnUrl}", // URL with parameters
new { controller = "CMS_Account", action = "LogOn", ReturnUrl = ""} // Parameter defaults
);
routes.MapRoute(
"CMS_Account", // Route name
"{controller}/{action}/{ReturnUrl}", // URL with parameters
new { controller = "CMS_Account", action = "LogOn", ReturnUrl = ""} // Parameter defaults
);
routes.MapRoute(
"CMS_Account", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "CMS_Account", action = "LogOn", id = ""} // Parameter defaults
);
routes.MapRoute(
"CMS_Account", // Route name
"{controller}/{action}/", // URL with parameters
new { controller = "CMS_Account", action = "LogOn"} // Parameter defaults
);