最近在做一個小型項目,用到一個使用者註冊,由於安全考慮,要求用戶端和伺服器端同時驗證,我在項目中用的是微軟的驗證控制項,在使用的過程中發現真是很麻煩,在頁面中拖了十幾個驗證控制項不說,因為驗證的時候驗證失敗時自訂顯示一些錯誤資訊,做起來相當麻煩,有些小的改動找個代碼都不方便,最關鍵的是無法重複使用,所以想自己做一個驗證的控制項,本來想做自訂控制項,後來發現由於驗證方面定義的部分比較多,最後選擇使用類庫。通過頁面調用類來實現控制項的驗證,好了,廢話就不多說了,下面請大家一下,初次開源,請大家多多指教。
先請大家看看頁面調用的代碼。
頁面調用
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Demo
{
public partial class WebForm1 : System.Web.UI.Page
{
Koodoo.Validation.FormValidate fv;
protected void Page_Load(object sender, EventArgs e)
{
fv = new Koodoo.Validation.FormValidate(this, "Button1", true);
fv.ValiAjaxEmail("UserEmail", "請輸入正確格式的Email", "您輸入的郵箱已存在", "CheckEmail.aspx", "key");
fv.ValiNormalNumber("TextBox1", "請輸入數字,長度為2-6", false, 2, 6);
fv.ValiCompare("TextBox2", "上一個數字不相等", "TextBox1");
fv.ValiCheckbox("CheckBoxList1", "請至少選擇兩個", 2);
fv.ValiRadio("RadioButtonList1", "請選擇");
fv.ValiSelect("DropDownList1", "請選擇", "請選擇");
fv.Display();
}
protected void Button1_Click(object sender, EventArgs e)
{
if (fv.Submit_Server())
{
Response.Write("驗證通過");
}
else
{
Response.Write("驗證未通過");
}
}
}
}
執行個體化1->參數1:當前頁面,參數2:提交的按鈕,參數3:是否是開發階段(當處於開發階段時,每次都會產生JS代碼放到網站的JS檔案夾下,如處於運行階段,就設為false)
fv = new Koodoo.Validation.FormValidate(this, "Button1", true);
執行個體化2->參數1:當前頁面,參數2:提交的按鈕,參數3:顯示錯誤資訊方式(1:每一下控制項都有對就的Label顯示錯誤,2:在一個指定的Label上顯示所有錯誤資訊,3:在一個指定Label上顯示一條錯誤資訊)參數4:顯示錯誤資訊的指定Label,參數3為2和3時有效,參數5:是否是開發階段
fv = new Koodoo.Validation.FormValidate(this, "Buttin1", 1, "ErrMsg", true);
在使用後,調用Display()向頁面加入JS代碼。
在伺服器端驗證調用Submit_Server(),如果返回true則驗證通過。
當使用驗證報錯時,可以自訂Js指令碼可以用於顯示頁面一些自訂的報錯樣式
如我這裡面用到的: (註:報錯方式為 1 時,對就的顯示錯誤Label的ID為,被驗證控制項加“_Err”,如果前面加必填*時,則加"_X",說的不太清楚,大家看源碼吧)
var ShowErr = function(id)
{
$("#"+id).attr("style","border:1px #ff0000 solid;");
$("#"+id+"_Err").attr("style","color:red");
$("#"+id+"_X").attr("style","color:red");
}
var HideErr = function(id){
$("#"+id).attr("style","");
$("#"+id+"_Err").attr("style","");
$("#"+id+"_X").attr("style","");
}
更多的內容,大家看一下源碼吧
源碼已更新 源碼下載
第一次發到首頁,等待大家拍磚。