Asp.net开发小技巧

一.多个控件同用一个事件,从而可让代码更清晰,更简单,可维护性强
  如下:多个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.";

posted on 2007-06-29 11:07  残叶  阅读(313)  评论(0编辑  收藏  举报

导航