国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ASP.NET 服務(wù)器控件的驗(yàn)證
1. ASP.NET 服務(wù)器控件的客戶端驗(yàn)證
如果用戶使用的瀏覽器支持動(dòng)態(tài) HTML (DHTML),則 ASP.NET 驗(yàn)證控件可以使用客戶端腳本來執(zhí)行驗(yàn)證。因?yàn)檫@種控件可以提供及時(shí)反饋(無需到服務(wù)器的往返過程),所以用戶會(huì)感覺到頁的性能有所改善。
在大多數(shù)情況下,無需對頁或驗(yàn)證控件作出任何更改便可使用客戶端驗(yàn)證??丶⒆詣?dòng)檢測瀏覽器是否支持 DHTML 并執(zhí)行相應(yīng)的檢查??蛻舳蓑?yàn)證使用的錯(cuò)誤顯示機(jī)制和服務(wù)器端驗(yàn)證相同。
安全注意
即使已經(jīng)在客戶端上執(zhí)行了驗(yàn)證,也必須在服務(wù)器上執(zhí)行驗(yàn)證。這允許您通過服務(wù)器代碼來確定驗(yàn)證狀態(tài),并且避免用戶避開驗(yàn)證,從而提供了更高的安全性。
客戶端驗(yàn)證的差異如果是在客戶端上執(zhí)行驗(yàn)證,則驗(yàn)證控件可以包括某些附加功能:

  • 驗(yàn)證控件的對象模型在客戶端略有不同。請參見本主題中后面的客戶端驗(yàn)證對象模型。
      客戶端驗(yàn)證具有以下幾個(gè)細(xì)微不同之處:
      • 如果啟用客戶端驗(yàn)證,則頁將包含對執(zhí)行客戶端驗(yàn)證所用的腳本庫的引用。

    • 使用 RegularExpressionValidator 控件時(shí),如果可以使用兼容 ECMAScript 的語言(例如 Microsoft JScript),則可以在客戶端檢查表達(dá)式??蛻舳苏齽t表達(dá)式檢查與在服務(wù)器上使用 Regex 類進(jìn)行的正則表達(dá)式檢查相比,兩者的差異非常小。
    • 頁中包含客戶端方法,以便在頁提交前截獲并處理 Click 事件。
        客戶端驗(yàn)證對象模型驗(yàn)證控件在客戶端上呈現(xiàn)的對象模型與在服務(wù)器上呈現(xiàn)的對象模型幾乎完全相同。例如,無論在客戶端上還是在服務(wù)器上,您都可以通過相同的方式讀取驗(yàn)證控件的 IsValid 屬性以測試驗(yàn)證。
        但是,在頁級別上公開的驗(yàn)證信息有所不同。在服務(wù)器上,頁支持屬性;在客戶端,它包含全局變量。下表比較了在頁上公開的信息。

        客戶端頁變量 服務(wù)器頁屬性 Page_IsValid
        IsValid
        Page_Validators(數(shù)組)   包含對頁上所有驗(yàn)證控件的引用。
        Validators(集合)   包含對所有驗(yàn)證控件的引用。
        Page_ValidationActive   表示是否應(yīng)進(jìn)行驗(yàn)證的布爾值。通過編程方式將此變量設(shè)置為 false 以關(guān)閉客戶端驗(yàn)證。
        (無等效項(xiàng))
        注意
        所有與頁相關(guān)的驗(yàn)證信息都應(yīng)被視為只讀信息。
        發(fā)送具有客戶端驗(yàn)證錯(cuò)誤的頁在某些情況下,您可能不愿意使用客戶端驗(yàn)證而愿意僅使用服務(wù)器端驗(yàn)證,即使是可以使用客戶端驗(yàn)證亦如此。例如,如果驗(yàn)證需要使用只有服務(wù)器才有的信息或資源(例如訪問數(shù)據(jù)庫),則客戶端驗(yàn)證不可行。
        默認(rèn)情況下,在執(zhí)行客戶端驗(yàn)證時(shí),如果頁上出錯(cuò),則用戶無法將頁發(fā)送到服務(wù)器。但您可能發(fā)現(xiàn)有必要允許用戶即使在出錯(cuò)時(shí)也可以發(fā)送。例如,頁上可能有一個(gè)取消按鈕或一個(gè)導(dǎo)航按鈕,您需要該按鈕即使在部分控件未通過驗(yàn)證的情況下也提交頁。

        2. 禁用 ASP.NET 服務(wù)器控件驗(yàn)證
        在特定條件下,您可能需要避開驗(yàn)證。例如,您可能具有一個(gè)頁面,即使用戶沒有正確填寫所有驗(yàn)證字段,也應(yīng)該可以發(fā)送頁。您可以設(shè)置 ASP.NET 服務(wù)器控件來避開客戶端和服務(wù)器的驗(yàn)證,而不只是客戶端驗(yàn)證。
        安全注意
        默認(rèn)情況下,ASP.NET 網(wǎng)頁執(zhí)行請求驗(yàn)證以確保用戶輸入內(nèi)容不包含腳本或 HTML 元素??梢燥@式禁用該功能。有關(guān)更多信息,請參見腳本侵入。
        您還可以禁用驗(yàn)證控件,以使它根本不在頁面上呈現(xiàn)并且不進(jìn)行使用該控件的驗(yàn)證。
        如果要執(zhí)行服務(wù)器上的驗(yàn)證,不執(zhí)行客戶機(jī)上的驗(yàn)證,您可以將單獨(dú)驗(yàn)證控件設(shè)置為不生成客戶端腳本。如果客戶端上的動(dòng)態(tài)更新導(dǎo)致頁的布局出現(xiàn)問題,或者如果要在驗(yàn)證之前執(zhí)行一些服務(wù)器代碼,這一措施將尤為有用。
        在特定控件中禁用驗(yàn)證
        下面的示例顯示如何創(chuàng)建“取消”按鈕,以便避開驗(yàn)證檢查:

        C#
        復(fù)制代碼<asp:Button id="Button1" runat="server"  Text="Cancel" CausesValidation="False"></asp:Button>
          禁用驗(yàn)證控件
          • 將驗(yàn)證控件的 Enabled 屬性設(shè)置為 false。

            禁用客戶端驗(yàn)證
            • 將驗(yàn)證控件的 EnableClientScript 屬性設(shè)置為 false。

              3. 以編程方式測試 ASP.NET 服務(wù)器控件的有效性
              驗(yàn)證控件測試用戶輸入,設(shè)置錯(cuò)誤狀態(tài),并生成錯(cuò)誤信息。它們不會(huì)更改頁的處理流程,例如,在檢測到用戶輸入錯(cuò)誤時(shí)不會(huì)略過代碼。取而代之的是,您將在執(zhí)行應(yīng)用程序的特定邏輯之前在代碼中測試控件的狀態(tài)。如果檢測到錯(cuò)誤,您自己的代碼將無法運(yùn)行;頁將繼續(xù)處理并返回給用戶,并向其顯示錯(cuò)誤信息。
              安全注意
              默認(rèn)情況下,ASP.NET 網(wǎng)頁自動(dòng)驗(yàn)證是否有惡意用戶試圖向您的應(yīng)用程序發(fā)送腳本或 HTML 元素。有關(guān)更多信息,請參見腳本侵入概述
              您可以測試常規(guī)的頁范圍的狀態(tài),并且可以測試單獨(dú)控件的狀態(tài)。通常,您在為頁創(chuàng)建的事件處理程序中完成上述工作。
              測試常規(guī)錯(cuò)誤狀態(tài)
              • 在您的代碼中,測試頁的 IsValid 屬性。此屬性將累計(jì)頁上所有驗(yàn)證控件的 IsValid 屬性的值(使用邏輯 AND),如果有任何驗(yàn)證控件設(shè)置為無效,頁的屬性都將返回 false。

              注意
              驗(yàn)證信息在頁的初始化或加載階段不可用。但是,您可以在 Page_Load 期間手動(dòng)調(diào)用 Validate 方法,然后測試頁的 IsValid 屬性。有關(guān)頁狀態(tài)的詳細(xì)信息,請參見 ASP.NET 頁生命周期概述
              下面的代碼示例演示按鈕的事件處理程序。該代碼測試頁的 IsValid 屬性。請注意,在此無需其他子句,原因是頁將自動(dòng)返回到瀏覽器,并且驗(yàn)證控件將顯示其自己的錯(cuò)誤信息。

              C#
              復(fù)制代碼void Button1_Click(object sender, System.EventArgs e){    if (IsValid)    {        // Perform database updates or other logic here.    }}
                測試單獨(dú)控件的錯(cuò)誤狀態(tài)
                • 依次通過頁的 Validators 集合,該集合包含對于所有驗(yàn)證控件的引用。您可以隨后檢查每個(gè)驗(yàn)證控件的 IsValid 屬性。

                注意
                如果希望在 Page_Load 期間執(zhí)行該檢查,則必須首先手動(dòng)調(diào)用 Validate 方法。
                下面的代碼示例演示如何獲取單個(gè)驗(yàn)證控件的狀態(tài)。
                Visual Basic

                復(fù)制代碼If (Me.IsPostBack) Then    Me.Validate()    If (Not Me.IsValid) Then        Dim msg As String        ' Loop through all validation controls to see which         ' generated the error(s).        Dim oValidator As IValidator        For Each oValidator In Validators            If oValidator.IsValid = False Then                msg = msg & "
                " & oValidator.ErrorMessage            End If        Next        Label1.Text = msg    End IfEnd If

                C#

                復(fù)制代碼if (this.IsPostBack){    this.Validate();    if (!this.IsValid)    {        string msg = "";        // Loop through all validation controls to see which        // generated the errors.        foreach (IValidator aValidator in this.Validators)        {            if (!aValidator.IsValid)            {                msg += "
                " + aValidator.ErrorMessage;            }        }        Label1.Text = msg;    }}

              • 本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
                打開APP,閱讀全文并永久保存 查看更多類似文章
                猜你喜歡
                類似文章
                RequiredFieldValidator控件為上文舉例
                最新技術(shù): ASP.NET 頁的客戶端
                總結(jié)3:和頁面相關(guān)的問題
                Windows Forms中通過自定義組件實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)驗(yàn)證(一) - 一個(gè)程序員的自省 ...
                Asp.net控件開發(fā)學(xué)習(xí)筆記(五)---Asp.net客戶端狀態(tài)管理
                JS控制 Asp.net 驗(yàn)證控件的驗(yàn)證順序
                更多類似文章 >>
                生活服務(wù)
                分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
                綁定賬號成功
                后續(xù)可登錄賬號暢享VIP特權(quán)!
                如果VIP功能使用有故障,
                可點(diǎn)擊這里聯(lián)系客服!

                聯(lián)系客服