MVC 2中的基页

时间:2010-09-13 13:53:27

标签: asp.net asp.net-mvc

我刚刚转到使用ASP.NET MVC 2.在Web表单中,我通常有一个从System.Web.UI.Page扩展的BasePage类。然后每个页面都从这个BasePage扩展。在这个BasePage类中,我有我需要的方法。我如何在MVC应用程序中执行此操作?

任何样品都会受到赞赏。

感谢。

3 个答案:

答案 0 :(得分:3)

MVC有点不同。等价物将是BaseController,尽管这与经典ASP.NET意义上的页面并不完全相关。一开始,控制者没有任何标记。

在基本控制器中,您可以注入所有页面所需的任何模型类以及必须作为所有Action请求的一部分执行的任何常见行为。一个示例可能是一些自定义检查进入Controller OnActionExecuting事件...

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onactionexecuting.aspx

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //check the filterContext for a certain condition
        if (condition) {
            //do something else - redirect to a different route or 
            //render a different view to to the default
            filterContext.Result = new RedirectResult(newUrl); 
        }
        //Otherwise, do nothing, the requested Action will execute as normal...
    }

答案 1 :(得分:2)

在MVC中,渲染UI的关注点更加分离,因此根据代码在基页中的作用将决定它在MVC中的位置。

如果您的代码生成HTML,则可能会创建自定义HTML帮助程序和可重用的局部视图(.ascx)。如果它处理输入数据的次数超过模型绑定器类中的输入数据,则可以为公共代码创建基本模型绑定器。如果它与您的服务和域模型进行了对话,那么它将在控制器中进行,并且您可以再次使用基本控制器。对持久层的查询将在您的模型中进行,并且在此重用代码会导致对您的体系结构的更大讨论。

答案 2 :(得分:1)

我们还从ASP.NET中的基页类转移,发现基本控制器和基础模型(ViewData)类的组合运行良好。

ex page属性例如:CurrentUser可从基本Controller获得,并在启动时传递给基础ViewData,因此您可以在aspx页面上使用它们。