Asp.net MVC2中的基本页
我刚刚开始使用ASP.NETMVC2。在web表单中,我通常有一个从System.web.UI.Page扩展而来的BasePage类。然后每个页面都从这个基本页面扩展。在这个BasePage类中,我有我需要的方法。在MVC应用程序中如何实现这一点 请提供样品Asp.net MVC2中的基本页,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我刚刚开始使用ASP.NETMVC2。在web表单中,我通常有一个从System.web.UI.Page扩展而来的BasePage类。然后每个页面都从这个基本页面扩展。在这个BasePage类中,我有我需要的方法。在MVC应用程序中如何实现这一点 请提供样品 谢谢。MVC有点不同。等效的是BaseController,尽管它与经典ASP.NET意义上的页面并不完全相关。首先,controleler没有任何标记 您可以将所有页面所需的任何模型类以及必须作为所有操作请求的一部分执行的任何常见行为注入
谢谢。MVC有点不同。等效的是BaseController,尽管它与经典ASP.NET意义上的页面并不完全相关。首先,controleler没有任何标记 您可以将所有页面所需的任何模型类以及必须作为所有操作请求的一部分执行的任何常见行为注入到基本控制器中。一个例子可能是一些自定义检查进入控制器OnActionExecuting事件
在MVC中有点不同。等效的是BaseController,尽管它与经典ASP.NET意义上的页面并不完全相关。首先,controleler没有任何标记 您可以将所有页面所需的任何模型类以及必须作为所有操作请求的一部分执行的任何常见行为注入到基本控制器中。一个例子可能是一些自定义检查进入控制器OnActionExecuting事件
我们还从ASP.NET中的基页类迁移过来,发现基类控制器和基类模型(ViewData)的组合工作得很好
因此,ex Page属性(例如:CurrentUser)可从基本控制器获得,并且在启动时也会传递到基本ViewData,以便您可以在aspx页面上使用它们。我们还从ASP.NET中的基本页面类移走,并发现基本控制器和基本模型(ViewData)类的组合效果很好
因此,ex-Page属性(例如:CurrentUser)可从基本控制器获得,并且在启动时也会传递到基本ViewData,以便您可以在aspx页面上使用它们。在MVC中,呈现UI的关注点有更大的分离,因此取决于基本页面中的代码将指示它在MVC中的位置
如果您的代码生成HTML,那么您可能会创建自定义HTML帮助程序和可重用的部分视图(.ascx)。如果它处理的是输入数据,那么它将进入一个模型绑定器类,您可以为公共代码创建一个基本模型绑定器。如果它与您的服务和域模型通信,那么它将进入控制器,并且您可以再次使用基本控制器。对持久性层的查询将进入您的模型,在这里重用代码将导致对您的体系结构进行更大的讨论。在MVC中,呈现UI的关注点会有更大的分离,因此取决于代码在基本页中所做的事情,将决定它在MVC中的位置
如果您的代码生成HTML,那么您可能会创建自定义HTML帮助程序和可重用的部分视图(.ascx)。如果它处理的是输入数据,那么它将进入一个模型绑定器类,您可以为公共代码创建一个基本模型绑定器。如果它与您的服务和域模型通信,那么它将进入控制器,并且您可以再次使用基本控制器。对持久性层的查询将进入您的模型,在这里重用代码将导致对您的体系结构进行更广泛的讨论。在我的BasePage中,我有一个名为GetUser的方法。它将获取使用系统的用户的当前员工编号。该方法现在将走向何方?@biolumination通常,控制器将发出从您的模型(域/业务对象和服务)获取用户的请求,这反过来将得到从持久层获取用户的其他抽象层的支持。所以答案是…这要视情况而定。您的代码实际上是直接进入数据库并获取用户,还是调用了由其他抽象层支持的服务来为请求提供服务?在我的BasePage中,我有一个名为GetUser的方法。它将获取使用系统的用户的当前员工编号。该方法现在将走向何方?@biolumination通常,控制器将发出从您的模型(域/业务对象和服务)获取用户的请求,这反过来将得到从持久层获取用户的其他抽象层的支持。所以答案是…这要视情况而定。您的代码实际上是直接进入数据库并获取用户,还是调用了由其他抽象层支持的服务来服务请求?
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...
}