最大的網站源碼資源下載站,
1、在callback之后保持滾動條的位置
在asp.net1.1中,callback之后保持滾動條的位置是一件非常痛苦的事情,特別是頁中有一個grid并且想要編輯特定的行。為了不停留在想要得行,頁面會重新加載并且必須在頂部向下滾動。在asp2.0中,只需要簡單的在頁面的屬性中加入maintainscrollpostiononpostback屬性即可:
<%@ page language="c#" maintainscrollpositiononpostback="true" autoeventwireup="true" codefile="" inherits="" %>
2、頁面加載后設置默認焦點到控件上
這也是一個非常簡單的例子,不需要javascript的輔助即可完成。如果在頁面中有一兩個textbox,為什么要讓用戶去點擊textbox來開始輸入數據呢?是不是可以能夠讓光標已經停留在textbox進而可以輸入數據呢?使用htmlform控件的defaultfocus屬性就可以輕易的做到:
<form id="frm" defaultfocus="txtusername" runat="server">
 
  </form>
3、用戶點擊“enter”鍵時觸發默認按鈕的click實踐。
在asp1.1中,想要使用戶點擊“enter”鍵就能關聯到一個button的服務器段的click事件需要借助于javascript,這是很痛苦的。幸好,現在可你使用htmlform控件的defaultbutton屬性來設置。這個屬性也可以設置到panel控件上,當用戶移動到頁面中不同的panel上,點擊enter鍵來觸發不同的button控件的click事件。
   <form id="frm" defaultbutton="btnsubmit" runat="server">
     
   </form>
4、簡單的尋找固定的控件。
在頁面的控件中按層次尋找控件很痛苦,但是如果你知道控件怎樣固定在頁面中,就可以用簡寫”$”來查找控件而不用寫遞歸的代碼。請看下面代碼,注意”$”的使用:
<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
} 
5、強類型訪問跨頁提交的控件
這個比其他的要內容多一點,但是很有用。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還有一個typename屬性,你可以定義一個基本類型,一個或多個頁面從此類型繼承下來,使得這種技術可以在多頁面上使用。
previouspage.iscrosspagepostback可以判斷是否為垮頁提交。
對于跨頁提交的補充:
在asp.net 1.x 版本中,頁面都是提交到自己本身,并不能方便的指定需要提交的目的頁面。例如firstpage.aspx中的button只能提交到 firstpage.aspx,而不能提交到secondpage.aspx。很多時候,asp.net 1.x這樣工作方式使我們的開發方式受到不少限制。熟悉asp/jsp/php的朋友大概很不習慣,因為以前經常使用的提交方式突然無法使用,雖然也有解決這個問題的方法(欲詳細了解的讀者可去微軟網站收看webcast),可是過程太煩瑣,不甚方便。令我們高興的是,asp.net 2.0中有了跨頁面提交的簡單方法。可在第一個頁面中的button添加postbackurl屬性設置為接受提交的頁面,并且這個頁面增加previouspagetype 指令,若要是目標頁面在新窗口中打開則可以在源頁面<form>標記增加target=’_blank’屬性。
6、強類型訪問母版頁的控件
previouspagetype指令并不是唯一的可以強類型訪問控件的方法。如果在母版頁中定義了一個公共屬性,并且想要以強類型的方式訪問它,那么就可以在頁面頂部添加mastertype指令(注意:mastertype指令同previouspagetype一樣允許定義一個typename)
<%@ mastertype virtualpath="masterpage.master" %>
你可以在內容頁書寫如下的代碼來訪問目標母版頁的屬性:
this.master.headertext = "label updated using mastertype directive with virtualpath attribute.";
7、validation groups驗證組
一個頁中可能有多個控件和多個按鈕。當其中的一個按鈕被點擊后想要特定的validator被激發而不是頁面中的所有validator。在asp.net 1.1中除了hack code沒有更好的辦法。asp.net 2.0中給所有的validator控件和按鈕(button、linkbutton等等)增加了validatorgroup屬性,就可以輕松地解決這個問題。如果在頁面中有一個textbox并且緊挨著他有一個requiredfieldvalidator 和button控件,可以將requiredfieldvalidator和button的validationgroup屬性設置成一樣的值從而使得點擊button時只觸發這個requiredfieldvalidator的validor,任何沒有定義在validationgroup內的其他的validator都會被忽略。看下例:
<form id="form1" runat="server">
    search text: <asp:textbox id="txtsearch" runat="server" /> 
                    <asp:requiredfieldvalidator id="valsearch" runat="server" 
     controltovalidate="txtsearch" validationgroup="searchgroup" /> 
                    <asp:button id="btnsearch" runat="server" text="search"
         validationgroup="searchgroup" />  .
        other controls with validators and buttons defined here
</form>
新聞熱點
疑難解答
圖片精選