視圖模型:處理換行符與ASP MVC textarea元素和jQuery不顯眼的驗證
public class ViewModel
{
[Display(Name = "Message")]
[StringLength(500, ErrorMessage = "Your message must be {1} characters or fewer.")]
public string Message { get; set; }
}
視圖(摘錄):
<div class="form-field-group">
@Html.LabelFor(m => m.Message , "Your message:")
@Html.TextAreaFor(m => m.Message)
@Html.ValidationMessageFor(m => m.Message)
</div>
我還使用了不顯眼的驗證,像這樣的網絡.config:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
絕對是教科書的東西,它似乎工作出色。
的問題!
所以我的HTML spec for line breaks in form data的理解是,它編碼爲CR LF。這當然是我在調試處理這個視圖模型後的控制器動作時看到的。
然而,通過JavaScript讀取輸入的值時,換行符根據瀏覽器不同(IE6-8似乎給CRLF,而Chrome和Firefox最近建立在窗口給了剛剛LF)。
這意味着如果您輸入帶換行符的文本,jquery驗證器將讓他們看到的字符爲498個字符,但在到達模型綁定時,它將被轉換爲504和ModelState.IsValid是(正確)錯誤的。
任何人都有最好/最簡單的方法來解決這個問題的任何想法?
乾杯。這工作。這將通過未來的jQuery驗證升級來維持這一點很煩人。我可能會看到他們是否在意這一點。 – SimonF
好。代碼是否會影響到另一個功能? – toha