[Asp.Net] 使用Validate Control驗證UserControl

[Asp.Net] 使用Validate Control驗證UserControl


前言


通常當我們在開發網頁時,如果有某些部分我們會經常得重複使用,

那我們通常會把它寫成UserControl,方便之後Reuse,

例如像是DateTime編輯器,或是文字編輯器等等,

除了重複利用的好處之外,當我們需要更換編輯器時,

也僅僅需要更改一個UserControl就可以讓網頁上每個地方都套用到,

節省了我們很多修改的功夫。

那若是我們想要使用Validate Control來驗證UserControl又要怎麼做呢?

其實非常的簡單,讓我們來實際演練一次吧!

 

實際演練


首先我們先建立一個UserControl,這是一個文字編輯器,

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor"
    TagPrefix="cc1" %>
    
<cc1:Editor ID="Editor1" runat="server" />

我們替它新增一個屬性Text,用來取得輸入的文字

using System.Web.UI;

public partial class TextEditor : System.Web.UI.UserControl
{
    public string Text
    {
        get
        {
            return Editor1.Content;
        }
        set
        {
            Editor1.Content = value;
        }
    }   
}

將這個UserControl放入Page中

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Src="~/TextEditor.ascx" TagName="Editor" TagPrefix="usercontrol" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        請輸入文字訊息:<br />
        <usercontrol:Editor runat="server" ID="Editor1" />        
        <asp:Button runat="server" ID="Button_Submit" Text="送出" OnClick="Button_Submit_Click" />
    </div>
    </form>
</body>
</html>

輸入文字後,我們可以從UserControl取得輸入的訊息

51

那要如何替UserControl加上驗證呢?

其實只要在UserCotrol的Class上,加上一個ValidationProperty的Attribute,

指定要用來驗證的Property名稱,之後就可以使用ValidateControl來驗證了!

52

之後我們可以在Page頁面加入Asp.Net的驗證控制項如下

        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="內容不得為空!"
            ControlToValidate="Editor1" />

再次執行網頁,我們這次不要輸入任何訊息,來看看驗證控制項是否奏效

53

54

我們可以看到,驗證控制項已經成功地起作用了!

 

結語


當我們在開發網頁時,我們應該對所有送給網頁的訊息抱持著不信任的態度,

所有的訊息都必須經過驗證,確認訊息沒有任何危險之後,

才能利用訊息來進行之後的各種操作,以預防任何意外的產生。

這次的介紹希望對大家有幫助,面對UserControl時也一樣的可以進行驗證,

如果有任何問題,歡迎大家多多討論和指教囉 ^_^

 

P.S. 這次介紹的UserControl驗證的部分僅有Server端,需要Postback之後才會觸發。

      如果需要Client端可能就要使用Javascript來實作囉!

 

參考資料:

1. ValidationPropertyAttribute 類別

2. [ASP.NET]Validation Controls (轉錄) - In 91