【问题标题】:StringLengthAttribute MVC Blank Space at endStringLengthAttribute MVC 末尾有空格
【发布时间】:2014-06-25 14:22:05
【问题描述】:

好的,所以我设置了如下所示的属性。如果有人在 15 个字符中输入了一个字符,他们就会收到一条错误消息。这是它应该工作的预期方式,除非我发现了一个问题。如果有 15 个字符加上这 15 个字符末尾的空格,则不会捕获错误。为什么会这样,我该如何预防。

示例。 “Santa Fe MAMMAL”

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

【问题讨论】:

  • 因为空格是字符?
  • 是的,空格是一个字符,因此验证应该将其捕获为超过 15 个字符的限制。不幸的是,验证没有抓住它。

标签: c# asp.net-mvc-4 unobtrusive-validation


【解决方案1】:

嗯,这是一种奇怪的行为,但我们能做些什么:(

我认为您无法通过 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(); }

【讨论】:

  • 虽然这不是最终的解决方案,但它确实有效,并且适用于我需要的解决方案。我真希望我知道为什么它会以另一种方式失败。我想我会在 MSDN 论坛上发布这个,看看我是否对这个问题有所了解。
  • 现在我认为最好删除 StringLength 属性并使用此正则表达式:[RegularExpression(@"^(.{0,14}\S)?$", ErrorMessage = "Error")] 。它将允许不以空格结尾的 0-15 长文本。
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2018-12-04
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多