Asp.net開發小技巧

來源:互聯網
上載者:User
一.多個控制項同用一個事件,從而可讓代碼更清晰,更簡單,可維護性強
  如下:多個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.";
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.