Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Asp.net mvc Redirect to same page after login

Tags:

asp.net-mvc

I have a partial view which contains inputs for logging in. The partial view is present on every page of the website so that a user can login to the website from any page.

I have a base controller which is then inherited by all other controllers as below.

When the logon info is submitted, it goes to the logon action in the base controller.

How do I return the view that the logon info was submitted from?

public class BaseController : Controller
{
    [HttpPost]
    public ActionResult logon(string tx_username, string tx_password)
    {
    //Verify login details

    }
}


public class HomeController : BaseController
{
    public ActionResult Index()
    {

        return View();
    }

    public ActionResult About()
    {

        return View();
    }

    public ActionResult Contact()
    {
        return View();
    }
}
like image 507
Shazoo Avatar asked Jan 28 '26 07:01

Shazoo


1 Answers

Add another parameter ReturnUrl in the @Html.BeginForm which can be populated using the ViewConext.Controller.ValueProvider, and post the current action and controller name on which user is in the login post action like:

View:

First Way:

@using (Html.BeginForm("logon", 
                       "Home", 
                       FormMethod.Post, 
 new { ReturnUrl = Url.Action(@ViewContext.Controller.ValueProvider.GetValue("action").RawValue.ToString(),
 @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue.ToString()) }))
{


}

2nd Way:

@using (Html.BeginForm("logon", 
                       "Home", 
                       FormMethod.Post, 
         new { ReturnUrl = this.Request.RawUrl }))
        {


        }

Action:

[HttpPost]
public ActionResult logon(string tx_username, string tx_password,string ReturnUrl)
{
 //If login successful

 return Redirect(ReturnUrl);

}
like image 83
Ehsan Sajjad Avatar answered Jan 30 '26 00:01

Ehsan Sajjad