本文介绍了OnActionExecuting标准asp.NET相同呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有MVC.NET的 OnActionExecuting
标准asp.NET等效? ?
我认为这将是的Page_Load
,因为 OnActionExecuting
每次执行一个动作时间(或页面将被称为负载)。但我遇到的问题继承时,我尝试使用的Page_Load来代替。
因为它是非常困难的,使我的解决办法工作了的Page_Load
我想我可能没有最好的解决方案...
他们是否是等价的或足够接近有什么想法?
背景:
我转换了一块的应用MVC3成标准.NET在SharePoint Web部件包。
这里的MVC code我试着翻译,你可以看到它的用户安全位我翻译:
保护覆盖无效OnActionExecuting(ActionExecutingContext filterContext){ 如果(!SiteCacheProvider.ItemCached(enmCacheKey.SiteSetting)){ 如果(filterContext.IsImplementedGeneralPrincipal()){
IUserProfile USERPROFILE =((IGeneralPrincipal)filterContext.HttpContext.User).UserProfile; SiteCacheProvider.ChangeSiteSetting(userProfile.SiteID);
}
} base.OnActionExecuting(filterContext);
}
解决方案
首先,采取帐户的没有的行动是在ASP.NET,因为模型是不同的(基于事件的) - 有'再没有方法(行为),你可以用,这是所有关于的事件。
二,在ASP.NET中,您可以使用(特别),以便通过添加所需的逻辑,以拦截来袭请求您的应用程序页面。
从MSDN:
For example:
using System;
using System.Web;
using System.Collections;
public class HelloWorldModule : IHttpModule
{
public string ModuleName
{
get { return "HelloWorldModule"; }
}
public void Init(HttpApplication application)
{
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
application.EndRequest += (new EventHandler(this.Application_EndRequest));
}
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("<h1>HelloWorldModule: Beginning of Request</h1><hr>");
}
private void Application_EndRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("<hr><h1>HelloWorldModule: End of Request</h1>");
}
public void Dispose()
{
}
}
这篇关于OnActionExecuting标准asp.NET相同呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!