Wydaje się proste, ale okazuje się, że tak nie jest - głównie ze względu na fakt, że View nie może wiedzieć, w którą stronę przejdzie model i kontroler. Bez względu na to, jest to problem, który wymaga rozwiązania:Jak określić zwrotny URL linku do formularza logowania?
Mam link do logowania, który przenosi użytkownika do formularza, aby wprowadzić nazwę użytkownika i hasło. Gdy użytkownik kliknie "prześlij", chcę przekierować do strony, którą przeglądał. Najłatwiejszym sposobem na to wydaje się być podanie adresu URL do bieżącej strony jako zapytania (...?returnUrl=...
) i wszystko inne jest już zbudowane.
Ale gdzie znajdę ten adres z mojego widoku podczas renderowania linku? W naturalny sposób nie mogę użyć funkcji RedirectToActionResult, ponieważ nie chcę przenosić użytkownika - tylko wyrenderować adres URL w łączu. Jak?
EDIT:
Mam teraz zaczął bounty na to pytanie, a więc widzę pasuje do wyjaśnienia moich potrzeb, jak również.
Mam UserControl o nazwie Login.ascx w moim folderze udostępnionym. W nim renderuję ActionLink do formularza logowania i jest on zawarty w stopce na mojej stronie głównej. Co chcę osiągnąć jest następujące:
Gdy actionlink jest renderowany, QueryString returnUrl
jest dołączany ze na trasie do widoku, który jest aktualnie renderowane. Jeśli zostanie to wykonane, użytkownik zostanie przeniesiony z powrotem na stronę, którą przeglądał po udanym logowaniu z funkcjonalnością, która jest już wbudowana w ASP.NET MVC Framework.
Powód, dla którego poprzednie odpowiedzi były niewystarczające, polega głównie na tym, że nie dostarczyły one drogi do zbudowania adresu URL trasy do bieżącego widoku. Wiem, jak dodać querystring, ale nie wiem, jak znaleźć to, co umieścić w tym ciągu.
Aby oznaczyć odpowiedź jako z odpowiedzią, chcę metodę ponownego zbudowania trasy do aktualnie wyświetlanego widoku, z poziomu kontroli użytkownika na stronie głównej.
Nie miałem ogólnej wersji metody helpera ActionLink (czy powinienem w projekcie MVC RC Refresh? Czy brakuje mi czegoś?), Ale zadziałało to: <% = Html.ActionLink ("logowanie", "logowanie", nowe { controller = "User", returnUrl = HttpContext.Current.Request.RawUrl})%> –
Wyjaśnienie - jeśli zmienisz wpis na ten kod, dostaniesz gadżety =) –