我的情景似乎很常见,但到目前为止我还没有找到好的解决方案。因此,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)。所以它超出了数据库列的长度(实际上服务器端验证在整个后端之前失败了,但为了简单起见,我们省略了验证)。
我到目前为止找到的解决方案是:
我想除了那三个之外还应该有别的东西。
答案 0 :(得分:1)
这是MVC的一个古老而已知的问题(我不确定它是否已解决) 但不同的浏览器对待换行的方式不同我的建议是定制模型绑定器,就像你在这里找到的那样jQuery validate textarea maxlength bug