返回asp.net mvc3中每个控制器操作的单个视图

时间:2013-04-01 10:22:55

标签: asp.net-mvc-3

我想为asp.net mvc3中的每个控制器动作请求返回相同的视图。实现这一目标的最佳方法是什么。我不想在每个控制器动作中编写视图名称

2 个答案:

答案 0 :(得分:0)

您可以使用

Return RedirecToAction(ActionName)

所以你可能有像

这样的东西
<ActionName("PageX")> _
Function PageX() As ActionResult
  Return RedirectToAction("CommonView")
End Function

<ActionName("PageY")> _
Function PageY() As ActionResult
  Return RedirectToAction("CommonView")
End Function

<ActionName("PageZ")> _
Function PageZ() As ActionResult
  Return RedirectToAction("CommonView")
End Function

<ActionName("CommonView")> _
Function CommonView() As ActionResult
  Return View()
End Function

答案 1 :(得分:0)

如果你想要单个Controller,那么在这个控制器中覆盖OnActionExecuted

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    var viewResult = filterContext.Result as ViewResultBase;

    if (viewResult != null)
    {
        viewResult.ViewName = "view-name";
    }

    base.OnActionExecuted(filterContext);
}

如果您想要整个应用,请覆盖ViewEngine

public class RazorViewEngineViewMobileSupport : RazorViewEngine
{
    public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
    {
        return base.FindPartialView(controllerContext, "view-name", useCache);
    }

    public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
    {
        return base.FindView(controllerContext, "view-name", masterName, useCache);
    }
}