1. 使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}
2. 使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
& ......
通过Asp.net(C#)应用程序读取本地上传的Excle文件,存放到DataSet中,通过DataSet中的方法直接生成XML文件.
C# Code
if (this.FileUpload1.PostedFile != null)
{
string filename = this.FileUpload1.FileName.ToString();
string path = @Server.MapPath("../File/") + filename;
this.FileUpload1.PostedFile.SaveAs(path);
//读取用户上传的Excle文件
string conn="Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source ='"+path+"';Extended Properties=Excel 8.0";
OleDbConnection olecon = new OleDbConnection(conn);
......
通过Asp.net(C#)应用程序读取本地上传的Excle文件,存放到DataSet中,通过DataSet中的方法直接生成XML文件.
C# Code
if (this.FileUpload1.PostedFile != null)
{
string filename = this.FileUpload1.FileName.ToString();
string path = @Server.MapPath("../File/") + filename;
this.FileUpload1.PostedFile.SaveAs(path);
//读取用户上传的Excle文件
string conn="Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source ='"+path+"';Extended Properties=Excel 8.0";
OleDbConnection olecon = new OleDbConnection(conn);
......
1. 用Response.Write方法
代码如下:
Response.Write("<script type='text/javascript'>alert("XXX");</script>");
此方法缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定 义,比如
Response.Write("<script type='text/javascript'>function myfun(){}</script>");
2.用ClientScript类
代码如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");
这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。
3.普通的添加控件的Attributes属性
对于普通按钮就是:Button1.Attributes.Add("onclick","MyFun();");
只能在Onload中或类似于onload的初始化过程中添加才有效。而且是先执行脚本函数,无法改变执行顺序。
注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在 ......
首先看数据库表结构:
代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class SetManage_druclass : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitTreeView(null, 0);
}
}
public void InitTreeView(TreeNode pNode, int parentID)
{
DataSet ds = new DataSet();//这里调用数据库获取数据源
TreeNode node;
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
node = new TreeNode();
//节点名称
node.Text = ds.Tables[0].Rows[i]["CATEGORY_NAME"].ToString();
......
Page_Load--页面加载事件.
Page.IspostBack判断是否第一次加载。
每次响应服务信息(既客户请求ASP.NET页面-ASPX文件或Web服务-
ASMX文件)就加载一次(执行一次Page_Load)。
加载的时候并不是每次多编译一次代码文件,因为:每一次请求
ASPX文件时并不是多要进行一次编译,而是第一次执行ASP.NET页面的
结果是:页面被编译成机器代码,而且被载入到.net运行时间的全局程
序集缓存(GAC)当中,这样就为其他的托管应用程序的使用做好了准备
。只有在代码发生改动(或者重新启动了Web服务器或计算机)时,ASPX
页面才需要重新编译。
-----------------------------------------
附: 编译的过程:在编译使用.net framwork库的代码时先是编译成
MSIL中间语言,然后把MSIL编译成机器代码-实时编译(just-in-
time,JIT)。 ***实时编译-他能使应用程序组件只有在应用程序需要他
们的时候才被编译。
----------------------------------------- ......
以前做.NET winform的时候,一直都是用 Console.Write向控制台输出信息的,这次做web的时候,发现这个语句用不了。
查了一下资料,才发现web程序执行时,是被附加到IIS进程的一个单独的AppDomain中的,所以就算有输出也看到,所以Console.Write调试信息无法显示出来。
那么解决办法是,用debug代替:
System.Diagnostics.Debug.Write("");
当然你也可以用Respone.Write()来实现在页面输出,但这有一个问题,就是asp.net多层开发的是有,一个解决方案有多个项目,出来网站项目可以用Respone.Write()之外,其他类库项目无法用。
所以,还是用Debug比较好。 ......