asp.net mvc 응용 프로그램에서이 문제가 발생합니다.C#에서 텍스트 영역의 줄 바꿈 문자로 인해 텍스트 길이가 늘어납니다.
내 모델 중 하나에 "설명"필드가 있습니다. 이 필드의 데이터베이스 열은 NVarchar(300)
으로 설정됩니다.
제 생각에는 다음과 같이 텍스트 영역을 만듭니다.
@Html.TextAreaFor(m => m.Description, new { maxlength = "300" })
클라이언트 측 유효성 검사를 위해 "jquery.validate.unobtrusive.min.js"를 사용하고 있습니다. 따라서 사용자가 텍스트 영역에 텍스트를 입력하고 내용의 길이가 300자를 초과하면 "300자를 넘지 않는 문자를 입력하십시오."라는 메시지가 표시됩니다.
다음과 같은 sceanario가 올 때까지 모든 것이 잘 작동합니다. 사용자가 텍스트 영역에 다음 데이터를 입력합니다.
f
f
f
f
f
f
f
f
sdfa
(콘텐츠 8 개 새로운 라인을 가짐)
은 "방해"유효성에 따라 콘텐츠 길이 300 (단일 문자로서 "n \"각각의 새로운 라인을 카운트) 그렇게 검증이 패스를 가지고 및 페이지 포스트. 인코딩에 의한 내 C# 코드에서
는 동일한 콘텐츠 길이 fo를해진다 308 (각각의 새로운 라인을 카운팅 "\ r은 n \"2 개의 문자) 제비의 데이터베이스 동작 실패 그것이 300을 허용하는 문자.
누군가이 속성에 대해 StringLength
속성을 가져야한다고 말하면 다음과 같은 이유가 있습니다.
클라이언트 측 유효성 검사가이 특정 속성에 대해 발생하지 않으면 서버로 이동하고 모델이 유효하지 않으므로 오류 메시지와 함께 페이지로 돌아옵니다.
이 문제를 해결할 수있는 방법을 알려주십시오.
분할이 나를 위해 제대로 작동하지 않았습니다. 방법을 사용하여 계산되지 않은 줄 바꿈 문자에 문제가있었습니다. 대신 다음과 같이 사용했습니다 : '// 줄 바꿈 문자를 서버의 수와 일치하도록 2 개의 공백으로 바꿉니다. var replacedValue = value.replace (/ (\ n)/gm, ""); return replacedValue.length;' 참고 : 코드 블록은 여하튼 두 개가 있어야하는 공간을 하나만 보여줍니다. – Ben