I have two actions inside my controller (shoppingCartController)
public ActionResult Index()
{
//some stuff here
return View(viewModel);
}
public ActionResult AddToCart(int id)
{
return RedirectToAction("Index");
}
Is there anyway to prevent the users from directly calling the index action by typing the url in the browser?
For example: If the user browses to shoppingCart/index
be redirected to Home/Index.
You could use the [ChildActionOnly]
attribute on your action method to make sure it's not called directly, or use the ControllerContext.IsChildAction
property inside your action to determine if you want to redirect.
For example:
public ActionResult Index()
{
if(!ControllerContext.IsChildAction)
{
//perform redirect here
}
//some stuff here
return View(viewModel);
}
If you can't make the Index action a child action, you could always check the referrer, understanding that it's not foolproof and can be spoofed. See:
How do I get the referrer URL in an ASP.NET MVC action?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With