Cet ressemble perversion MVC si vous impossible procédez redirection dans contrôleur, votre logiques ne correct.
Cependant, voici ce que j'utiliser si je n'ai pas accès au contrôleur pour une raison quelconque:
<meta http-equiv="refresh" content='0;url=<%=Html.Action("MyAction","MyController") %>'>
Mise à jour
Dans votre commentaire, vous l'avez mentionné est parce que vous » re faire la vérification des rôles et vous ne voulez pas faire cela dans chaque contrôleur/action. Si c'est le cas, alors voici quelque chose que vous pourriez envisager:
Créer une classe de contrôleur de base et faire en sorte que chaque contrôleur s'étende de cette classe.
Dans votre contrôleur de base, utilisez une méthode OnActionExecuting. Ici, vous avez quelque chose comme ceci:
public class MyBaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (/*the user is not in the role desired*/)
{
RedirectToRoute(filterContext, new { controller = "MyController", action = "MyAction"});
}
}
private void RedirectToRoute(ActionExecutingContext context, object routeValues)
{
var rc = new RequestContext(context.HttpContext, context.RouteData);
string url = RouteTable.Routes.GetVirtualPath(rc, new RouteValueDictionary(routeValues)).VirtualPath;
context.HttpContext.Response.Redirect(url, true);
}
}
c'est une vérification de rôle et je ne veux pas le coder dans chaque action quand je peux le faire dans ma page maître et en finir avec ça – BigOmega
Okay. Eh bien, j'ai mis à jour le meta tag pour afficher un Html.Action. Cela devrait faire tout ce dont vous avez besoin. –
Ah, donc je vais devoir ajouter ceci au
Je ne peux pas le faire n'importe où dans la vue? n'y a-t-il pas un moyen? Je suppose que le HTML est ce qu'il est, merci – BigOmega