[C#][ASP.NET MVC5] 繼承 ValidationAttribute 簡單實作表單欄位驗證

有用過MVC的人一定都知道只要在Model上面加標籤[Required],即可達到前後端驗證欄位必填的效果,無聊研究了一下來簡單實作自定義的表單欄位驗證 !!

 

  1. 首先建立一個類別,繼承ValidationAttribute,宣告m_BaseText變數來儲存預設禁止的文字,而m_Text則是用來儲存禁止其他文字用的變數。
    public class ExampleAttribute : ValidationAttribute
    {
    	private string[] m_Text;
    	private string[] m_BaseText = new string[] { @"\", @"/", @"<", @">" };
    }
  2. 接下來利用多載宣告兩個建構子,一個是不帶參數的,另一則是型別為string[]Text變數,並放到剛剛宣告的m_Text裡面。
    public ExampleAttribute()
    {
    	m_Text = new string[] { };
    }
    
    public ExampleAttribute(string[] Text)
    {
    	this.m_Text = Text;
    }
  3. 接下來把IsValid方法override掉,並實作驗證機制。
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
    	string strValue = (string)value;
    	string[] strBaseError = m_BaseText.Where(x => strValue.Contains(x)).ToArray();
    	string[] strCustomError = m_Text.Where(x => strValue.Contains(x)).ToArray();
    
    	if (strBaseError.Count() == 0 && strCustomError.Count() == 0)
    	{
    		return ValidationResult.Success;
    	}
    	else
    	{
    		List<string> temp = new List<string>();
    		temp.AddRange(m_BaseText.ToList());
    		temp.AddRange(m_Text.ToList());
    		string errorMsg = $"禁止輸入 [{string.Join(", ", temp.ToArray())}] !!";
    		return new ValidationResult(errorMsg);
    	}
    }
    
  4. 完成 !!
    2016-09-26-23_22_37-example-%e6%88%91%e7%9a%84-asp-net-%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8f

    2016-09-26-23_29_45-example-%e6%88%91%e7%9a%84-asp-net-%e6%87%89%e7%94%a8%e7%a8%8b%e5%bc%8f

原始碼:https://github.com/shuangrain/WebApplication_CustomAttribute



這裡的資訊對您有用嗎?歡迎斗內給我