Web 編程II

一.ASP.NET回送

1.只有進行回送時,纔在服務器上觸發事件。

即,文本框中的值改變時,TextChanged事件不會立即觸發,只有單擊Submit按鈕,提交了窗體,併發送給服務器,纔會觸發TextChanged事件。


(如果希望把更改事件立即傳送給服務器(例如,改變了DropDownList的選項),可以把AutoPostback屬性設置爲true。

這樣就會使用客戶端的JavaScript把窗體數據立即提交給服務器。當然,網絡通信量也會增加。使用這個功能時要小心。)


頁面返回給服務器後,比較控件的新值和舊值是由View State完成的。


2.示例,在同一個頁面顯示結果

A.在VS中打開上一篇文章裏建立的web程序EventRegistrationWeb


B.給web頁面Registration.aspx添加一個標籤labelResult,清空這個標籤的text屬性



C.雙擊submit按鈕,添加click事件,在Registration.aspx.cs文件中添加代碼如下

 protected void buttonSubmit_Click(object sender, EventArgs e)
        {
            string selectedEvent = dropDownListEvents.SelectedValue;
            string firstName = textFirstName.Text;
            string lastName = textLastName.Text;
            string email = textEmail.Text;
            labelResult.Text = String.Format("{0} {1} selected the event {2}",
            firstName, lastName, selectedEvent);
        }


D.debug→start without debugging,運行結果如下



3.示例,在第二個頁面顯示結果

A.創建新的item,webform,命名爲ResultsPage.aspx


B.給ResultsPage添加一個標籤labelResult


C.給ResultsPage類的Page_Load方法添加代碼


D.把Registration.aspx頁面上Submit按鈕的PostbackUrl屬性設置爲ResultsPage.aspx


E.刪除Submit按鈕的Click事件處理程序,因爲不再需要它了


F.啓動Registration.aspx頁面,輸入一些數據,單擊Submit按鈕,就會重定向到ResultsPage.aspx頁面,其中顯示了輸入的數據。

(結果沒有出來,可能是FindControl()方法不能使用)



4.示例,創建強類型化的previouspage

A.project→add new class,爲項目添加一個新類,命名爲RegistrationInfo


B.給RegistrationInfo添加代碼



C.在Registration.aspx.cs文件中給Registration的類添加公共屬性RegistrationInfo,所以是添加到類class裏面



D.在ResultPage.aspx文件的Page指令下面添加PreviousPageType指令



E.在ResultsPage類的Page_Load()方法中,代碼可以簡化爲



F.運行

(結果沒有出來)



二.ASP.NET AJAX回送

1.在一般的ASP.NET回送中,會請求整個頁面。爲了減少網絡上的傳輸量,可以使用ASP.NET Ajax回送。

在Ajax回送中,只使用JavaScript返回並刷新頁面的一部分,使用UpdatePanel可以方便地做到這一點。


2.示例,使用UpdatePanel控件

A.在VS中打開EventRegistrationWeb


B.添加一個新AJAX Web窗體UpdatePanelDemo.aspx


C.在工具箱的AJAX Extensions類別中,給頁面添一個UpdatePanel控件



D.在UpdatePanel控件內部添加一個標籤和一個按鈕,在UpdatePanel控件外部再添加一個標籤和一個按鈕

把UpdatePanel控件內部和外部的按鈕的Text屬性分別設置爲AJAX Postback和ASP.NET Postback


E.給兩個按鈕指定click事件添加代碼


F.啓動應用程序,單擊兩個按鈕。單擊AJAX Postback按鈕僅刷新第一個標籤。單擊ASP.NET Postback會刷新整個頁面

(結果沒有出來)



三.輸入的有效性驗證

1.在用戶輸入數據時,應檢查數據是否有效,檢查可以在客戶端和服務器上進行。

在客戶端上檢查數據可以使用JavaScript來進行。但是,如果使用JavaScript在客戶端檢查數據,就一定要在服務器上也進行檢查,因爲客戶端是永遠不能完全信任的。

在服務器上檢查數據是絕對必須的。在客戶端上檢查數據還能提供更好的性能,因爲在客戶端上驗證完數據之前,不需要把數據發送到服務器上。

在ASP.NET中,不需要自己編寫驗證函數。許多已有的驗證控件能進行客戶端和服務器驗證。


2.所有的驗證控件都有ErrorMessage和ControlToValidate屬性。

ErrorMessage可以定義顯示的消息。ControlToValidate對輸入進行檢查。

<asp:TextBox ID="textFirstname" runat="server"></asp:TextBox> 

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 

        ErrorMessage="Enter your first name"ControlToValidate="textFirstName">

</asp:RequiredFieldValidator> 


3.以下爲所有的驗證控件



4.示例,檢查輸入的電子郵件地址

A.打開之前創建的項目EventRegistrationWeb


B.打開之前創建的文件Registration.aspx


C.選擇表格右邊的列,任意一個格子,右鍵,insert→column to the right,添加一個新列


D.添加3 個RequiredFieldValidator控件和1個RegularExpressionValidator控件



E.按照下表配置驗證控件



F.其中的ValidationExpression,可以在其後的...中添加



G.把以下代碼添加到ResultsPage類的Page_Load()方法中

protected void Page_Load(object sender, EventArgs e) 

try 

if (!PreviousPage.IsValid) 

labelResult.Text = "Error in previous page"; 
return; 

//... 


H.運行程序



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章