2013-06-07 2 views
1

내가 TextBoxFor 사용하여 MVC 뷰에 모델 TI 편집 바인딩 해요 : 회사 이름이 Andenæs이라고 가정TextBoxFor 문자 인코딩 (스칸디나비아 문자)

@Html.TextBoxFor(m => m.Company) 

(또는 Lønø 같은 어떤 scandvian 이름)의 TextBoxFor

decoding problem

어떻게 그 문제를 해결하기 위해 아래 스크린 샷처럼 인코딩?

답변

0

는 TextBoxFor 당신은 TextBoxForLabelFor 혼동

인코딩. LabelFor 도우미 (여기서 사용하는 것)는 모델 속성 값을 HTML 페이지로 직접 출력합니다. 이를 안전하게 수행하려면 HTML에이 값을 인코딩해야합니다. 그래서 이것을보고있는 사람은 Andenæs입니다. 이것은 안전하며 브라우저는 올바르게 렌더링합니다. HTML은 인간이 아닌 브라우저에서 읽고 해석 할 수 있도록되어 있습니다. 따라서 브라우저를보고있는 사람이 올바른 텍스트를 볼 때까지는 괜찮습니다.

이렇게하면 내장 헬퍼의 동작을 변경할 방법이 없다고합니다. 이를 달성해야한다면 커스텀 헬퍼를 작성하고 모든 것을 수동으로 인코딩해야합니다 (권장하지 않음).


UPDATE : 당신은 코멘트 섹션 당신이 아무데도 어떤 TextBoxFor 도우미를 사용하지 않습니다에 표시 한 내용에 따르면

. 당신이 값이 제대로 인코딩되도록 텍스트 상자 도우미를 이용해야하는 반면

<input type="text" class="string @ViewData.ModelMetadata.PropertyName" value="@ViewData.TemplateInfo.FormattedModelValue" name="@string.Format("{0}-{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.ModelMetadata.PropertyName)" id="@ViewData.TemplateInfo.HtmlFieldPrefix" dafault-value="@ViewData.ModelMetadata.DisplayName" /> 

: 당신은 당신이 당신의 입력 필드를 하드 코딩 잘못 값을 인코딩하는 일부 사용자 지정 편집기 템플릿을 사용하는

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue, 
    new { 
     id = ViewData.TemplateInfo.HtmlFieldPrefix, 
     @class = "string " + ViewData.ModelMetadata.PropertyName", 
     dafault_value = ViewData.ModelMetadata.DisplayName 
    } 
) 
+0

미안, 내가 고쳐 줬어. 나는 TextBoxFor를 의미했습니다. –

+0

그렇다면 회사 문자열의 가치는 'Andenæs'가 아니지만 이미 'Anden æ s'으로 인코딩 된 HTML입니다. 서버 측 코드 나 해당 값을 검색하는 위치를 수정해야합니다. 데이터베이스에 이미 손상된 HTML 인코딩 데이터가있는 것으로 의심됩니다. –

+0

아닙니다. 문제는보기에 있습니다. 나는 그것을 시험했다. model.Company는 올바른 형식의 "Andenæs"형식으로보기로 전송됩니다. 데이터베이스에서 동일합니다. 여기 내가 사용하는 편집기 템플릿입니다 : <입력 유형 = "텍스트" 클래스 = 값 = 이름 = "ViewData.TemplateInfo.FormattedModelValue @" "ViewData.ModelMetadata.PropertyName @ 문자열" "@의 및 String.format (" id = "@ ViewData.TemplateInfo.HtmlFieldPrefix" dafault-value = "@ ViewData.ModelMetadata.DisplayName" id = "@ ViewData.TemplateInfo.HtmlFieldPrefix" /> –