惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 残叶

Enum视为位域 ASP.NET 2.0 HttpHandler实现生成图片验证码(转) Asp.net 2.0生命周期 - 残叶 ASP.NET 2.0 的 App_Offline.htm - 残叶 联合使用抽象类和接口 - 残叶 C#中抽象类和接口的区别 C#静态构造函数 封装K2.net 2003中的K2ROM 跨页面提交数据的方法 页面的重定向 - 残叶 (转)Asp.net 中 Get和Post 的用法 (转)关于ASP.net运行流程 O/R Mapping (Object-Relation Mapping,对象关系映射) - 残叶 网络主机名与IP C#发送Email方法总结 @@IDENTITY与SCOPE_IDENTITY() .NET和SQL Server中“空值”辨析 - 残叶 Transactions - 残叶 回家了 - 残叶
Asp.net开发小技巧
残叶 · 2007-06-29 · via 博客园 - 残叶

一.多个控件同用一个事件,从而可让代码更清晰,更简单,可维护性强
  如下:多个Button共用一个事件处理的2种方法
  1.利用OnCommand事件

<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:Button ID="Button1" runat="server" Text="测试1" CommandName="1" OnCommand="Button_Click" />
            
<asp:Button ID="Button2" runat="server" Text="测试2" CommandName="2" OnCommand="Button_Click" />
            
<asp:Button ID="Button3" runat="server" Text="测试3" CommandName="3" OnCommand="Button_Click" />
        
</div>
    
</form>
</body>

protected void Button_Click(object sender, CommandEventArgs e)
    
{
        
switch (e.CommandName)
        
{
            
case "1":
                Response.Write(
"你点击了第一个Button");
                
break;
            
case "2":
                Response.Write(
"你点击了第二个Button");
                
break;
            
case "3":
                Response.Write(
"你点击了第三个Button");
                
break;
        }

    }

  2.利用OnClick事件

<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:Button ID="bt1" runat="server" Text="测试1" CommandName="1" OnClick="Button_Click" />
            
<asp:Button ID="bt2" runat="server" Text="测试2" CommandName="2" OnClick="Button_Click" />
            
<asp:Button ID="bt3" runat="server" Text="测试3" CommandName="3" OnClick="Button_Click" />
        
</div>
    
</form>
</body>

protected void Button_Click(object sender, EventArgs e)
    
{
        Button bt 
= sender as Button;
        
switch (bt.ID)
        
{
            
case "bt1":
                Response.Write(
"你点击了第一个Button");
                
break;
            
case "bt2":
                Response.Write(
"你点击了第二个Button");
                
break;
            
case "bt3":
                Response.Write(
"你点击了第三个Button");
                
break;
        }

    }

二. 页面加载后设置默认焦点到控件上

<form id="frm" DefaultFocus="txtUserName" runat="server">
</form>

三. 用户点击"Enter"键时触发默认按钮的Click事件

<form id="frm" DefaultButton="btnSubmit" runat="server">
</form>

四. 简单的寻找固定的控件
      在页面的控件中按层次寻找控件很痛苦,但是如果你知道控件怎样固定在页面中,就可以用简写”$”来查找控件而不用写递归的代码。请看下面代码,注意”$”的使用:

<form id="form1" runat="server" DefaultFocus="formVw$txtName">
    
<div>
        
<asp:FormView ID="formVw" runat="server">
            
<ItemTemplate>
                Name: 
                
<asp:TextBox ID="txtName" runat="server" 
                    Text
='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
            
</ItemTemplate>
        
</asp:FormView>
    
</div>
</form>

这个小技巧也可以用在服务器端的 使用FindControl()函数时:

TextBox tb = this.FindControl("form1$formVw$txtName"as TextBox;
if (tb != null)
{
    
//Access TextBox control
}

五. 强类型访问跨页提交的控件

      ASP.NET 2.0引入了交叉回发的概念使得一个页面可以将信息回发到另一个不同的页面,可以将button控件的PostBackUrl属性设置为接受回发数据的页面来完成。一般的,回发的数据可以象前一页那样做一些事情。但是,如果你要获得前一页制定控件的属性就需要一个cast(),如果你给引起回发的code-behide页面添加了一个公共属性,你就可以直接以强类型的方式添加PreviousPageType来指向引起回发的页面从而能够访问那个属性。

      果有一个页面Default.aspx,他有一个公共属性来返回此页面上一个TextBox,数据回发目的页(SearchResults.aspx)可以以强类型的方式(不需要FindControl() 方法),在页面的顶部添加:

<%@ PreviousPageType VirtualPath="Default.aspx" %>

这样,SearchResults.aspx中代码就可以以强类型的方式访问Default.aspx的TextBox。下面的例子假定Default.aspx定义的属性名为SearchTextBox:

TextBox tb = PreviousPage.SearchTextBox;

六. 强类型访问母版页的控件
        PreviousPageType指令并不是唯一的可以强类型访问控件的方法。如果在母版页中定义了一个公共属性,并且想要以强类型的方式访问它,那么就可以在页面顶部添加MasterType指令(注意:MasterType指令同PreviousPageType一样允许定义一个TypeName)

<%@ MasterType VirtualPath="MasterPage.master" %>

你可以在内容页书写如下的代码来访问目标母版页的属性:

this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath attribute.";