C# ASP.NET中几个页面之间共享常用函数的方法
这可能是一个很蹩脚的问题,我缺乏关于ASP.Net的知识。在这种情况下,链接到一篇解释的文章将是非常受欢迎的 我在ASP.NET网站上工作,使用C#as代码隐藏。我目前的项目涉及开发几个功能非常相似的页面,许多功能都是相同的。比如说C# ASP.NET中几个页面之间共享常用函数的方法,c#,asp.net,architecture,C#,Asp.net,Architecture,这可能是一个很蹩脚的问题,我缺乏关于ASP.Net的知识。在这种情况下,链接到一篇解释的文章将是非常受欢迎的 我在ASP.NET网站上工作,使用C#as代码隐藏。我目前的项目涉及开发几个功能非常相似的页面,许多功能都是相同的。比如说 private void PermissionCheck() { if (null == Session["UserID"] || null == Session["ProjectID"] || null == Session
private void PermissionCheck()
{
if (null == Session["UserID"] ||
null == Session["ProjectID"] ||
null == Session["AssetID"] ||
null == Session["ProjectName"])
{
Response.Redirect("~/Login.aspx");
}
}
在两页上也是一样的。其他一些事情也是一样的。我想把它放到公共基类中。但还有其他一些功能根本不属于页面:
private string GetAttachmentTempPath()
{
return Request.PhysicalApplicationPath + WebConfigurationManager.AppSettings.Get("AttachmentsTempFolder");
}
我想将其移动到附件
类中,但为了获得应用程序的物理路径,我需要将请求对象传递到该方法中,这不是很好,因为它将附件
类与页面.请求
对象耦合在一起
是否有任何方法可以将这些函数移动到其他地方,而无需通过页面。请求周围的对象
p、 这个应用程序非常庞大,没有改变整个体系结构的余地。对于您的权限,您可以创建一个基本页面类:
class BasePage : Page
{
...
protected override OnInit() {
// do check here
}
}
现在您可以像这样实现页面类MyOtherPage:BasePage{…}
每次加载MyOtherPage时,都会执行OnInit
您可以在此处看到完整的页面生命周期:
您的其他问题:考虑实现全局可用静态工具类
更新
使web.config这样的东西更容易访问的一个好方法是单例。在asp.net中,单例只创建一次,直到asp工作进程停止为止。因此,这些值在整个asp.net应用程序中共享。这也有助于在全局上下文中存储数据,在用户发出页面请求(例如版本号等)时,您不希望从数据库或文件中取出这些数据
更新2
要访问请求而不将其传递给每个函数,请使用以下命令:
HttpContext.Current.Request
如果页面后面有类似的功能,可以使用
您可以在usercontrol中创建函数,并在必要时在页面中使用该控件
看看这篇关于的文章,对于页面级别的可重用代码来说,基页是一个很好的选择。除此之外,对于配置值之类的东西,最好专门为那些基于这种类型操作的方法提供实用程序类。
如果需要避免将Page
对象传递到这些类型的实用程序方法中
HttpContext
类将非常方便,因为您可以通过该类通过静态成员访问许多ASP.Net对象 是的,我考虑过遗产问题。但是应用程序有大约50个页面,每个页面都有不同的权限/其他功能集。我只幸运地拥有这两个具有相同权限和功能的页面。我会想一想怎么把它放进去。谢谢至于静态工具类,有一些,但是我如何避免将代码>请求/代码>对象传递到该类?@ Trimax也许你应该考虑在你的应用程序中实现一个角色系统。有关请求对象的问题,请再次查看我的更新答案。角色系统在下一年要做的事情列表中。谢谢你的更新你仍然可以把它放在附件类;附件类方法可以是:私有静态字符串GetAttachmentTempPath(string appPhysicalPath)-然后您可以从项目中的任何位置调用它-字符串attachmentTempPath=GetAttachmentTempPath(Request.PhysicalApplicationPath);这样,用于处理附件的代码都存在于Attachment类中,但您可以根据需要将实际数据传递给它(甚至可以在初始化该类时这样做)。传入对象实际上比依赖HttpContext耦合性更低,顺便说一句,如果你使用的是网站项目,微软的官方建议是:@sq33G这是一个非常有趣的想法。。有点搞定了。我再想想哈!HttpContext——这就是我所缺少的。谢谢!