Это звучит как извращение MVC, и если вы не можете выполнить перенаправление в контроллере, тогда ваша логика неверна.
Однако вот что я бы использовал, если бы по какой-либо причине у меня не было доступа к контроллеру:
<meta http-equiv="refresh" content='0;url=<%=Html.Action("MyAction","MyController") %>'>
Обновление
В своем комментарии вы упомянули, что это происходит из-за проверки ролей, и вы не хотите делать это в каждом контроллере / действии. Если это так, то вот что вы хотели бы рассмотреть:
Создайте базовый класс контроллеров и сделайте так, чтобы каждый контроллер расширялся от этого класса.
В вашем базовом контроллере есть метод OnActionExecuting . Здесь у вас есть что-то вроде этого:
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);
}
}