[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取得輸入的訊息
那要如何替UserControl加上驗證呢?
其實只要在UserCotrol的Class上,加上一個ValidationProperty的Attribute,
指定要用來驗證的Property名稱,之後就可以使用ValidateControl來驗證了!
之後我們可以在Page頁面加入Asp.Net的驗證控制項如下
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="內容不得為空!"
ControlToValidate="Editor1" />
再次執行網頁,我們這次不要輸入任何訊息,來看看驗證控制項是否奏效
我們可以看到,驗證控制項已經成功地起作用了!
結語
當我們在開發網頁時,我們應該對所有送給網頁的訊息抱持著不信任的態度,
所有的訊息都必須經過驗證,確認訊息沒有任何危險之後,
才能利用訊息來進行之後的各種操作,以預防任何意外的產生。
這次的介紹希望對大家有幫助,面對UserControl時也一樣的可以進行驗證,
如果有任何問題,歡迎大家多多討論和指教囉 ^_^
P.S. 這次介紹的UserControl驗證的部分僅有Server端,需要Postback之後才會觸發。
如果需要Client端可能就要使用Javascript來實作囉!
參考資料: