2012-07-25 8 views
0

사용자가 인증 된 페이지를 방문하려고하면 LogOn 페이지로 리디렉션됩니다. 되어 다음 로그온 조치 :returnUrl 매개 변수가 LogOn 작업의 Post 메서드로 전달되지 않습니다.

컨트롤러 액션

[HttpPost] 
    public ActionResult LogOn(LogOnModel model, string returnUrl) 
    { 
    //Authentication codes goes here ....... 
    } 

로그온보기 :

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @class = "jmenu" })) 
    { 
    // Form for login codes goes here...... 
    } 

문제 : HTML에서 매개 변수를 넣지 않은 로그온보기에서 .BeginForm() 내가 원하는대로 잘 작동합니다. 이 페이지는 로그인 후 사용자가 인증을 위해 로그인으로 리디렉션되는 페이지로 리디렉션됩니다. 하지만 위와 같이 매개 변수를 전달하면 로그인 후에 홈 페이지로 리디렉션됩니다. 여기서는 returnUrl이 LogOn 작업에 전달되지 않았기 때문일 수 있습니다. 어떻게 LogOn 작업을 위해 Html.BeginForm의 returnUrl 매개 변수를 전달할 수 있습니까? 또는 다른보기의 코드를 변경할 필요가 없도록 LogOn 작업에서보기를 수정하고 수정하지 않고도 가능합니까? 시간을내어 주셔서 감사합니다 ...

+0

이 시도 http://stackoverflow.com/questions/9144930/asp-net-mvc-returnurl-variable-not-showing-up-with-method-formmethod-post-in-htm – Tushar

답변

0

작업에서 Request.UrlReferrer을 사용하여 마지막 요청의 URL을 가져올 수 있습니다.

0

양식의 일부로 반환 URL을 정의하고자 할 것입니다. 한 가지주의해야 할 것은 항상 URL 리퍼러에 의존 할 수는 없다는 것입니다. 어떤 경우에는 null 일 수 있습니다.

@{ 
    string url = ""; 
    if (ViewContext.HttpContext.Request.UrlReferrer != null) 
    { 
     url = ViewContext.HttpContext.Request.UrlReferrer.PathAndQuery; 
    } 
} 

@using (Html.BeginForm("Logon", "Account", new { model = this.Model, returnUrl = url })) 
{ 
} 
+0

http://stackoverflow.com/questions/9144930/asp-net-mvc-returnurl-variable-not-showing-up-with-method-formmethod-post-in-htm – Tushar

관련 문제