如何从MVC中的父控制器返回视图

时间:2013-01-24 10:37:24

标签: c# asp.net-mvc controller

我知道如何从父控制器重定向,假设我有

public class _ParentController : Controller {  
    ...
}

public class HomeController : _ParentController {  
    ...
}

我可以向_ParentController添加方法:

protected override void OnActionExecuting(ActionExecutingContext filterContext) {
    if (condition) {
        filterContext.Result = Redirect(path);
    }
}

现在我需要返回一个视图或者执行Server.Transfer(我需要保留url)。在这种情况下,Server.TransferRequest对我不起作用,还有其他办法可以做我需要的吗?我使用.NET MVC3和IIS7.5

感谢。

2 个答案:

答案 0 :(得分:2)

例如,您可以:

protected override void OnException(ExceptionContext filterContext)
{
    base.OnException(filterContext);
    if (((filterContext.Exception is SecurityException)) ||
        ((filterContext.Exception is AuthenticationException)))
    {
        filterContext.ExceptionHandled = true;

        filterContext.Result = View("Error", "You don't have permission");
    }
}

这会将操作结果设置为您选择的视图,并保留当前网址。 (请记住,必须根据当前路线或共享文件夹在文件夹中找到该视图)

filterContext.Result = View("Name of view", "object model")';

答案 1 :(得分:1)

你试过吗

filterContext.Result = View(someParameter);