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();
}
}
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:
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 }))
{
}
[HttpPost]
public ActionResult logon(string tx_username, string tx_password,string ReturnUrl)
{
//If login successful
return Redirect(ReturnUrl);
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments