在无代码文件的aspx文件中添加类、函数和字段的方法
大家都知道,在开始WebForm程序时,一个WebForm由.cs代码文件与.aspx页面文件组成。在aspx文件中可以嵌入C#代码,但无法在aspx的嵌入C#代码中定义类,函数和字段等。这样,就限制了单aspx文件场景时所能发挥的功能了。
下面我们就来破除这个限制:
首先来看看下面的Default.aspx文件:
<%@ Page Language="C#" AutoEventWireup="true" %>
<%
//===============
//字符串拼接开始
//===============
System.Diagnostics.Debug.Print("Hello");
}
//字段定义
public const String ACTION_KEY = "action";
//类定义
public class Class1
{
public String Name;
//===============
//字符串拼接结束
//===============
%>
表面上看起来,下面的Class1类没有封闭,应该会导致编译错误,但编译一下试试看呢。结果却是编译成功。这样就可以自定义类和字段了。
原理就是aspx文件在编译的时候会动态生成代码,用<% %>包含的部分就会被拼接到类似于@__Render__control1方法的内部,这种做法那么下面的做法就有点类似于SQL注入了。根据上面的aspx文件,会动态生成如下的代码文件:
#pragma checksum "E:\工作项目\loncomip\DCIMSClient_1.2\DCIMSWebSite\Default.aspx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "6F470031E504F5735FDF857C2F72979997EAFC5C"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.17929
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace ASP {
#line 285 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.Profile;
#line default
#line hidden
#line 280 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Text.RegularExpressions;
#line default
#line hidden
#line 282 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.Caching;
#line default
#line hidden
#line 278 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Configuration;
#line default
#line hidden
#line 284 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.Security;
#line default
#line hidden
#line 289 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.UI.HtmlControls;
#line default
#line hidden
#line 287 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.UI.WebControls;
#line default
#line hidden
#line 276 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Collections;
#line default
#line hidden
#line 275 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System;
#line default
#line hidden
#line 286 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.UI;
#line default
#line hidden
#line 281 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web;
#line default
#line hidden
#line 283 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.SessionState;
#line default
#line hidden
#line 277 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Collections.Specialized;
#line default
#line hidden
#line 279 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Text;
#line default
#line hidden
#line 288 "C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\web.config"
using System.Web.UI.WebControls.WebParts;
#line default
#line hidden
[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
public class default_aspx : global::System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler {
private static bool @__initialized;
private static object @__fileDependencies;
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public default_aspx() {
string[] dependencies;
((global::System.Web.UI.Page)(this)).AppRelativeVirtualPath = "~/Default.aspx";
if ((global::ASP.default_aspx.@__initialized == false)) {
dependencies = new string[];
dependencies[] = "~/Default.aspx";
global::ASP.default_aspx.@__fileDependencies = this.GetWrappedFileDependencies(dependencies);
global::ASP.default_aspx.@__initialized = true;
}
this.Server.ScriptTimeout = ;
}
protected System.Web.Profile.DefaultProfile Profile {
get {
return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
}
}
protected override bool SupportAutoEvents {
get {
return false;
}
}
protected System.Web.HttpApplication ApplicationInstance {
get {
return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
}
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
private void @__BuildControlTree(default_aspx @__ctrl) {
#line 1 "E:\工作项目\loncomip\DCIMSClient_1.2\DCIMSWebSite\Default.aspx"
this.InitializeCulture();
#line default
#line hidden
@__ctrl.SetRenderMethodDelegate(new System.Web.UI.RenderMethod(this.@__Render__control1));
}
private void @__Render__control1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
#line 2 "E:\工作项目\loncomip\DCIMSClient_1.2\DCIMSWebSite\Default.aspx"
//===============
//字符串拼接开始
//===============
System.Diagnostics.Debug.Print("Hello");
}
//字段定义
public const String ACTION_KEY = "action";
//类定义
public class Class1
{
public String Name;
//===============
//字符串拼接结束
//===============
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
protected override void FrameworkInitialize() {
base.FrameworkInitialize();
this.@__BuildControlTree(this);
this.AddWrappedFileDependencies(global::ASP.default_aspx.@__fileDependencies);
this.Request.ValidateInput();
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public override int GetTypeHashCode() {
return ;
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public override void ProcessRequest(System.Web.HttpContext context) {
base.ProcessRequest(context);
}
}
}
希望能对大家有用,哈哈。
在无代码文件的aspx文件中添加类、函数和字段的方法的更多相关文章
- JabRef中添加中文文献出现乱码 解决方法
JabRef中添加中文文献出现乱码 解决方法 问题描述 JaBRef是一款开源的文献管理软件,主要用来管理bibtex格式的参考文献,可以与LATEX配合使用,方便论文参考文献的使用.文献管理 ...
- 向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]
向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转] Link: http://www.cnblogs.com/mymhj/archive/2012/10/12/27 ...
- element-ui 的el-button组件中添加自定义颜色和图标的实现方法
这篇文章主要介绍了element-ui 的el-button组件中添加自定义颜色和图标的实现方法,目前的解决方案是:添加一个自定义全局指令,同时在element-ui源码中,加入对应的组件.需要的朋友 ...
- eImage(仅两行代码实现输出从数据库中查询到的二进制字段)标签
功能: 专门用于向浏览器输出从数据库中查询到的二进制字段.支持通用的几十种文件类型 别名为edoc 使用方法: <chtml><eimage id=书包名type=类型>key ...
- Objective-C的面向对象中,类有真正的私有方法和私有属性么?
在Java/C#等面向对象语言中,方法的访问权限可以通过public/private/protected来控制其访问权限.而在OC中,方法却并没有访问修饰符.那么,我们有没有办法使其方法变为私有? 1 ...
- Python中编写类的各种技巧和方法
简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling). 你可以把它当作一 ...
- idea中添加类和方法注释以及codeCheck
前言:在idea中我们添加类以及类的方法的注释很有必要,让其他人能够看懂这个类或者函数的作用是什么:为了在开发过程中检查自己的编程规范,可以通过codecheck工具进行自我检查和约束 一.在idea ...
- 如何在VS2010中添加ActiveX控件及使用方法
方法1: 1.首先在在项目上面右击添加类,如下图所示: 2.点击添加ActiveX控件中的MFC类 3.找到需要添加的ActiveX类. 4.点击完成即可. 5.此时转到资源视图,打开如下视图.可能工 ...
- 在GDAL中添加GDALRasterizeGeometriesBuf函数
缘起 GDAL的栅格化算法中有GDALRasterizeLayers.GDALRasterizeLayersBuf和GDALRasterizeGeometries函数,但是没有GDALRasteriz ...
随机推荐
- 【Luogu】P1594护卫队(前缀和+DP)
TM搞了半天的二维DP方程还是错的. 这是题目链接: 设f[i]表示前i辆车顺利通过的最小时间. 则对于每一个i枚举该组车的起点j,然后从所有的f[j]+Min[j][i]中选一个最小的. Min[j ...
- BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元
http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...
- 刷题总结——宠物收养所(bzoj1208)
题目: Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明 ...
- spring5响应式编程
1.Spring5新特性 2.响应式编程响应式编程:非阻塞应用程序,借助异步和事件驱动还有少量的线程垂直伸缩,而非横向伸缩(分布式集群)当Http连接缓慢的时候,从数据库到Http数据响应中也会 ...
- bzoj1610 [Usaco2008 Feb]Line连线游戏 几何+暴力
Description Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i ...
- mysql/oracle 连接参数中文变问号
jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8&useSSL=true
- poj 2891 模线性方程组求解
Strange Way to Express Integers Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 8005 ...
- 浅谈云网融合与SD-WAN
一.引言 近年来,SD-WAN作为一项新技术在行业应用领域里快速发展,企业对SD-WAN的接受度日渐提升,各厂商也纷纷提出解决方案.随着全球云计算领域的活跃创新和我国云计算发展进入应用普及阶段,越来越 ...
- UVA11825 Hackers' Crackdown
题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 3 2 1 2 2 0 2 2 0 1 4 1 1 1 0 1 3 1 2 0 输出样例#1: Case 1: 3 ...
- Linux Kernel - Debug Guide (Linux内核调试指南 )
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级 ...