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

时间:2013-12-16 22:13:14

标签: c# asp.net-mvc

我的情景似乎很常见,但到目前为止我还没有找到好的解决方案。因此,ASP.NET-MVC应用程序与MSSQL数据库位于后端。该模型包括带有字符串字段描述的A类,需要限制为100个字符。它声明如下:

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

数据库中的相应列是nvarchar,列长度= 100 在用户界面中,“说明”字段由textarea表示, maxlength = 100

现在问题来自textarea中的换行符。它们在客户端被解释为1个字符,但在服务器端它们由Environment.NewLine表示,它是2个字符(\ r \ n)。所以它超出了数据库列的长度(实际上服务器端验证在整个后端之前失败了,但为了简单起见,我们省略了验证)。

我到目前为止找到的解决方案是:

  1. 在客户端添加一些魔法以解释换行符 textarea作为两个字符。我不喜欢这种解决方案 混淆用户。
  2. 将\ r \ n替换为服务器端的\ n。看起来像一个可能的黑客 有一些副作用。
  3. 删除/增加数据库中的列长度。最简单的一个 (不考虑服务器端验证问题)但是让我们 说并非如此。
  4. 我想除了那三个之外还应该有别的东西。

1 个答案:

答案 0 :(得分:1)

这是MVC的一个古老而已知的问题(我不确定它是否已解决) 但不同的浏览器对待换行的方式不同我的建议是定制模型绑定器,就像你在这里找到的那​​样jQuery validate textarea maxlength bug