字符串字段长度限制和换行问题

14

我所遇到的情况似乎很普遍,但是迄今为止我还没有找到一个好的解决方案。因此,在后端有一个使用MSSQL数据库的ASP.NET-MVC应用程序。该模型包括一个名为A的类,其中包含一个字符串字段Description,需要限制为100个字符。声明如下:

    [StringLength(100)]
    public virtual string Description { get; set; }

数据库中的对应列是 nvarchar,列长度为 100。在用户界面中,描述字段通过 textarea 表示,maxlength = 100

现在的问题是当 textarea 中存在换行时,在客户端上会将其解释为一个字符,在服务器端上则由 Environment.NewLine 表示,这是两个字符 (\r\n)。因此它超过了数据库列的长度(实际上,服务器端验证在整个后端事情之前就失败了,但出于简单起见,让我们忽略验证)。

我找到的解决方案如下:

  1. 在客户端上添加一些魔法,以便将文本区域中的换行符解释为两个字符。我不喜欢这个解决方案,因为它可能会让用户感到困惑。
  2. 在服务器端上用 \n 替换 \r\n。看起来像是一种 hack,可能会有一些副作用。
  3. 删除/增加数据库中的列长度。这是最简单的方法(不考虑服务器端验证问题),但假设这不是那种情况。

我想还应该有其他的解决方案。

1个回答

1

这是MVC的一个旧问题并且已被人所知(我不确定是否已经得到解决),但是不同浏览器会以不同的方式处理换行。我的建议是像在这里jQuery validate textarea maxlength bug找到的一样自定义模型绑定器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接