2014-06-25 27 views
0

好吧,我有一個屬性設置如下。如果有人在15個字符中鍵入一個名字甚至一個字符,他們會收到一條錯誤消息。這是它應該工作的預期方式,除了我發現一個問題。如果在這15個字符的末尾有15個字符加上空格,則不會捕獲錯誤。爲什麼是這樣,我如何防止它。StringLengthAttribute MVC空白處末尾

例子。 「聖達菲MAMMAL」< - 驗證並不能解決這個問題。 「Santa Fe MAMMALS」< - 驗證確實能解決這個問題。

[StringLength(15, ErrorMessage = "CallerID can be no more than 15 Characters in length including spaces")] 
    public string CompanyNameCallerID { get; set; } 
+0

因爲空格是一個字符? – Fals

+0

是的空白字符是一個字符,所以驗證應該將其視爲超過15個字符的限制。不幸的是驗證並沒有抓住它。 – scripter78

回答

0

嗯,這是奇怪的行爲,但我們能做些什麼:(

我認爲你不能StringLengthAttribute處理它(或我不知道如何),但你可以做這些事情:

  • 正則表達式

[RegularExpression(@"^(.*\S)?$"), ErrorMessage = "Some error message")]

但是我看到這裏的問題是,它不會匹配到底有空間的任何字符串(任何字符數)

  • 修剪物業 - 像

    private string m_CompanyNameCallerID = string.Empty; get { return this.m_CompanyNameCallerID; } set { this.m_CompanyNameCallerID = (string.IsNullOrWhiteSpace(value)) ? value : value.Trim(); }

+0

儘管這不是最終的解決方案,但它的工作原理和工作方式對我需要的解決方案來說很好。我希望我知道爲什麼它以其他方式失敗。我想我會在MSDN論壇上發佈這個內容,看看我是否會在這個問題上得到任何答案。 – scripter78

+0

現在我想更好的可以刪除StringLength屬性並使用這個正則表達式:'[RegularExpression(@「^(。{0,14} \ S)?$」,ErrorMessage =「Error」)]'。它將允許0-15長文本不以空格結束。 – Ademar