Hi I am trying to redirect from a view to a different view but I get a red squigly in visual studio.How can I redirect from inside a view to another view.This is what I have tryed but it does not work:
@Response.Redirect("~/Account/LogIn?returnUrl=Products");
How can I redirect from my curent view to another view?
It's because your statement does not produce output.
Besides all the warnings of Darin and lazy (they are right); the question still offerst something to learn.
If you want to execute methods that don't directly produce output, you do:
@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}
This is also true for rendering partials like:
@{ Html.RenderPartial("_MyPartial"); }
That's not how ASP.NET MVC is supposed to be used. You do not redirect from views. You redirect from the corresponding controller action:
public ActionResult SomeAction()
{
...
return RedirectToAction("SomeAction", "SomeController");
}
Now since I see that in your example you are attempting to redirect to the LogOn
action, you don't really need to do this redirect manually, but simply decorate the controller action that requires authentication with the [Authorize]
attribute:
[Authorize]
public ActionResult SomeProtectedAction()
{
...
}
Now when some anonymous user attempts to access this controller action, the Forms Authentication module will automatically intercept the request much before it hits the action and redirect the user to the LogOn action that you have specified in your web.config (loginUrl
).
Purpose of view is displaying model. You should use controller to redirect request before creating model and passing it to view. Use Controller.RedirectToAction method for this.