2013-12-16 111 views
9

我的場景看起來很常見,但到目前爲止我沒有找到好的解決方案。所以有MSSQL數據庫坐在後端的ASP.NET-MVC應用程序。該模型包括帶有字符串字段描述的類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. 用服務器端的\ n替換\ r \ n。看起來像一個黑客,可能 有一些副作用。
  3. 刪除/增加數據庫中的列長度。最簡單的一個 (不考慮服務器端驗證問題),但讓我們 表示情況並非如此。

我想除了那三個之外還應該有別的東西。

回答

1

這是MVC的一個老的和已知的問題(我不確定它是否解決了) 但不同的瀏覽器以不同的方式處理換行符。我的建議是像你在這裏找到的自定義模型粘合劑jQuery validate textarea maxlength bug