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

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - 残叶

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.";