Asp.net-Mvc

MVC DataAnnotation 不接受空格

  • June 9, 2021

我正在 MVC5 中開發登錄視圖。

我想在 ViewModel 級別設置一個 DataAnnotation 來聲明該欄位不接受空格。

MVC 中是否有數據註釋(類似於 [NoSpaces] 可用於不允許字元串欄位包含“空格”?

這個怎麼樣:

[RegularExpression(@"^\S*$", ErrorMessage = "No white space allowed")]

好吧,我能想到的最簡單但穩健的事情就是看看現有程式碼是如何工作的,或者現有數據註釋是如何工作的。

例如,讓我們看看System.ComponentModel.DataAnnotations.StringLengthAttribute類。

這裡只是定義(只是為了保持簡短):

namespace System.ComponentModel.DataAnnotations
{
   [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
   public class StringLengthAttribute : ValidationAttribute
   {
       public StringLengthAttribute(int maximumLength);

       public int MinimumLength { get; set; }

       public override string FormatErrorMessage(string name);
      
       public override bool IsValid(object value);
   }
}

所以我會簡單地從GitHub複製原始實現原始碼並根據我的需要對其進行自定義。例如,要獲得這樣的簽名(如果我理解正確並且這就是您想要的):

public StringLengthAttribute(int maximumLength, int minLength = 0, allowEmptySpaces = true);

有關更深入的資訊,我還將閱讀有關ValidationAttribute類的 Microsoft 文件,該類是自定義驗證數據註釋的基類。

編輯:

在我只需要排除空字元串或僅包含空格的字元串的情況下,我不會依賴正則表達式來驗證數據,因為正則表達式處理起來非常昂貴(並且需要大量記憶體分配,因為表達式編譯器、狀態機等)。

引用自:https://stackoverflow.com/questions/26658731