0

asp.net mvc3 のすべてのコントローラー アクション リクエストに対して同じビューを返したいと思います。これを実現する最善の方法は何ですか。すべてのコントローラーアクションにビュー名を書きたくない

4

2 に答える 2

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
于 2013-04-01T10:50:11.833 に答える
0

単一のコントローラーが必要な場合は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);
    }
}
于 2013-04-04T10:00:28.180 に答える