动态添加按钮及关联方法(带参数)

本文介绍了如何在.NET中实现动态按钮及其参数传递方法,并解决了从ASP迁移到.NET时MD5加密不一致的问题。
 动态添加按钮及关联方法(带参数)
 
问题:商城,商品自定义属性,需要在页面上动态产生按钮及关联到方法并传递参数
先写了如下方法
 1 None.gif protected   void  Page_Load( object  sender, EventArgs e)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        Button LB = new Button();
 4InBlock.gif        LB.Text = "测试";
 5InBlock.gif        //DIV1是页面上一个DIV
 6InBlock.gif        DIV1.Controls.Add(LB);
 7InBlock.gif        LB.Click += new EventHandler(Test);
 8ExpandedBlockEnd.gif    }

 9 None.gif     protected   void  Test( object  sender, EventArgs e)
10 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
11InBlock.gif        Response.Write("<script>alert('This is a test');</script>");
12ExpandedBlockEnd.gif    }

13 None.gif
但上面的方法没有传传递参数,只能调用一个方法,当然用极端方法可以把要传的参数赋给按钮的ID或什么属性的带过去,但不是最好的方法,于是又找到如下方法:

   

 1 None.gif   protected   void  Page_Load( object  sender, EventArgs e)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif            Button LB = new Button();
 4InBlock.gif            LB.Text = "测试";
 5InBlock.gif            LB.CommandName = "1";
 6InBlock.gif            LB.CommandArgument = "5";
 7InBlock.gif            DIV1.Controls.Add(LB);
 8InBlock.gif            LB.Command += new CommandEventHandler(this.Test);
 9ExpandedBlockEnd.gif    }

10 None.gif     protected   void  Test( object  sender, CommandEventArgs e)
11 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
12InBlock.gif        Response.Write("<script>alert('"+e.CommandArgument+"|"+e.CommandName+"');</script>");
13ExpandedBlockEnd.gif    }

14 None.gif

这样就可以通过按钮的CommandName 和CommandArgument 进行参数传递了。

posted @ 2007-06-09 11:16 范涛 阅读(129) | 评论 (0)编辑  收藏
 

问题:正在做一个ASP到ASP.NET的商城改版,原来的注册用户需要保留,原来的用户密码是ASP的MD5,32位加密,记得ASP的MD5与ASP.NET的MD5加密结果并不相等,于是试了下:
原来用的一个MD5加密方法:
     

ExpandedBlockStart.gif ContractedBlock.gif     /**/ /// <summary>
InBlock.gif        
/// MD5加密算法
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="md5str">要加密的字符串</param>
ExpandedBlockEnd.gif        
/// <returns>md5加密结果</returns>

None.gif          public   static   string  Getmd5( string  md5str)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
byte[] data;
InBlock.gif            
string ret = "";
InBlock.gif            data 
= System.Text.Encoding.UTF8.GetBytes(md5str);
InBlock.gif            MD5CryptoServiceProvider MD5OBJ 
= new MD5CryptoServiceProvider();
InBlock.gif            
byte[] md5byte = MD5OBJ.ComputeHash(data);
InBlock.gif            
for (int i = 0; i < md5byte.Length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                ret 
+= md5byte[i].ToString("x").PadLeft(2'0');
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return ret;
ExpandedBlockEnd.gif        }

None.gif


后来无意中发现有更简单的实现方法
     

ExpandedBlockStart.gif ContractedBlock.gif     /**/ /// <summary>
InBlock.gif        
/// MD5加密算法
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="md5str">要加密的字符串</param>
ExpandedBlockEnd.gif        
/// <returns>md5加密结果</returns>
None.gif          public   static   string  GetMd5( string  md5str)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif                
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5");
ExpandedBlockEnd.gif        }

None.gif
None.gif

用第二种方法输出"admin"的MD5加密结果为:
21232F297A57A5A743894A0E4A801FC3
与ASP MD5加密的16和32位加密结果比较:
16位加密(7a57a5a743894a0e)
32位加密(21232f297a57a5a743894a0e4a801fc3)

发现与32位加密结果相同,只是字母大小写不同,16位加密结果只是从32位加密结果中取了中间16个,于是:
      

ExpandedBlockStart.gif ContractedBlock.gif    /**/ /// <summary>
InBlock.gif        
/// ASP MD5加密算法
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="md5str">要加密的字符串</param>
InBlock.gif        
/// <param name="type">16还是32位加密</param>
ExpandedBlockEnd.gif        
/// <returns>Asp md5加密结果</returns>

None.gif          public   static   string  GetAspMd5( string  md5str, int  type)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
if (type == 16)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5").Substring(816).ToLower();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else if (type==32)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5").ToLower();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return "";
ExpandedBlockEnd.gif        }

None.gif

上面一个方法实现了在.NET里的ASP MD5加密结果。

转载于:https://www.cnblogs.com/guanghua100/archive/2007/07/09/810724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值