C# 在标准asp.NET中执行等效操作?
在标准asp.NET中是否有MVC.NET的C# 在标准asp.NET中执行等效操作?,c#,asp.net,asp.net-mvc-3,webforms,web-parts,C#,Asp.net,Asp.net Mvc 3,Webforms,Web Parts,在标准asp.NET中是否有MVC.NET的OnActionExecuting的等价物 我认为应该是Page\u Load,因为每次执行操作(或页面加载)时都会调用OnActionExecuting。但是当我尝试使用Page_Load时,我遇到了继承问题 由于很难使我的解决方案与页面加载一起工作我想我可能没有最好的。。。解决方案 有没有关于它们是否相等或足够接近的想法 背景: 我正在将MVC3应用程序的一部分转换为标准的.NET,以封装在SharePoint Web部件中 下面是我试图翻译的MV
OnActionExecuting
的等价物
我认为应该是Page\u Load
,因为每次执行操作(或页面加载)时都会调用OnActionExecuting
。但是当我尝试使用Page_Load时,我遇到了继承问题
由于很难使我的解决方案与页面加载一起工作
我想我可能没有最好的。。。解决方案
有没有关于它们是否相等或足够接近的想法
背景:
我正在将MVC3应用程序的一部分转换为标准的.NET,以封装在SharePoint Web部件中
下面是我试图翻译的MVC代码,您可以看到我正在翻译的用户安全位:
protected override void OnActionExecuting(ActionExecutingContext filterContext) {
if (!SiteCacheProvider.ItemCached(enmCacheKey.SiteSetting)) {
if (filterContext.IsImplementedGeneralPrincipal()) {
IUserProfile userProfile = ((IGeneralPrincipal)filterContext.HttpContext.User).UserProfile;
SiteCacheProvider.ChangeSiteSetting(userProfile.SiteID);
}
}
base.OnActionExecuting(filterContext);
}
首先,考虑到ASP.NET中没有动作,因为模型不同(基于事件)-没有可以修饰的方法(动作),这都是关于事件的 其次,在ASP.NET中,您可以使用(特别是)通过添加所需的逻辑来拦截对应用程序页面的传入请求 从MSDN: HTTP模块用于拦截HTTP请求以进行修改或利用 根据需要(如身份验证)基于HTTP的请求, 授权、会话/状态管理、日志记录、修改响应、, URL重写、错误处理、缓存 例如:
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()
{
}
}
使用系统;
使用System.Web;
使用系统集合;
公共类HelloWorldModule:IHttpModule
{
公共字符串模块名
{
获取{返回“HelloWorldModule”;}
}
public void Init(HttpApplication应用程序)
{
application.BeginRequest+=(新的EventHandler(this.application_BeginRequest));
application.EndRequest+=(新的EventHandler(this.application_EndRequest));
}
私有void应用程序_BeginRequest(对象源,事件参数e)
{
HttpApplication=(HttpApplication)源;
HttpContext=application.context;
context.Response.Write(“HelloWorldModule:Request的开头
”;
}
私有无效应用程序\u EndRequest(对象源,事件参数e)
{
HttpApplication=(HttpApplication)源;
HttpContext=application.context;
Write(“
HelloWorldModule:请求结束”);
}
公共空间处置()
{
}
}
您有目前为止的代码示例吗?@RaimondKuipers我的asp.NET代码或我正在转换的MVC代码?两者都是helpfull@MyName看看我的答案。@RaimondKuipers:S这是很多代码,所以我开始请求时会类似于执行操作时?我认为Begin请求会在操作执行之前发生……在MVC页面循环中,这就是为什么我认为页面加载可能更合适的原因。事实上,我非常困惑。那么授权是什么呢?我猜它的授权请求是什么???@MyName问题是你的目标是什么,它是指日志记录吗?安全性?主要是安全性,我实际上认为有一种更好的方法来实现我想要的,而不只是盲目地翻译代码lol。出于我的目的,我意识到用户是否是静态的并不重要。谢谢你的帮助。我将把它作为答案