2013-11-26 2 views
5

ASP.Net MVC 3 응용 프로그램에서 문자열 값에 큰 따옴표가 포함되어 있으면 양식에 잘린 문자열이 나타납니다. 사용자가 문자열을 입력하면TextBoxFor가있는 잘린 문자열

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

: '햄프셔 "군"백 형태로 출력 값을 렌더링 할 때, 단지 문자열'Hampsire '가 표시

는 예를 들어, 텍스트 박스가 주어. 모델의 값을 검사하면 큰 따옴표가 '햄프셔 \ "카운티'로 이스케이프 처리됩니다. Fiddler에서는 게시 된 값이 정확하며 값은 데이터베이스에 올바르게 저장되므로 텍스트 상자를 클라이언트에 렌더링하는 Html 도우미와 관련이있는 것으로 보입니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까?

+0

어째서 데이터의 중간에 왜 "?"가 존재합니까? 그 입력을 검증해야하고 아마도 제거해야합니까? 그렇지 않으면 지금 발생한 것과 같은 PITA 시나리오로 끝납니다 : –

+0

최종 HTML 텍스트 상자에 잘못된 값이있는 것과 별도로보기 모양으로 렌더링됩니까? 게시 할 수 있습니까? –

+0

두 개의 작은 따옴표를 사용하고 두 개의 아포스트로피를 나란히 사용하지 않습니까? –

답변

0

이것이 밝혀 짐에 따라 우리 자신의 문제였습니다. 약 9 개월 전에 사용자 정의 HttpEncoder에서 HtmlAttributeEncode() 메서드를 재정의하는 것이 좋을 것이라고 생각한 적이 있습니다. 출력 렌더링 중에 발생합니다.

내가 추가 한 이유는 응용 프로그램의 일부가 스크립트 블록을 클라이언트에 렌더링해야하고 기본 인코더가 HTML에서 JS 코드로 망가 트리고 있기 때문입니다.

재정의 메서드를 제거 할 때 문제가 없어졌습니다. 교훈 : 절대적으로 필요한 경우가 아니라면 프레임 워크를 사용하지 마십시오.

다시 한번 감사 드리며 시간을내어 고려해 보시기 바랍니다.

0

이 문제를 재현 할 수 없었습니다. MVC 3 프로젝트를 새로 만들었습니다. 두 개의 액션 (GET 및 POST)을 가진 컨트롤러를 만들었습니다. 유형이 지정된 뷰를 사용하여 문자열 속성이 Text 인 객체를 받고 양식 내에 표시했습니다. 예상대로 진행됩니다. 문제 없음. 내가 입력 한 모든 내용이 게시되고 POST에서 올바르게 반환됩니다.

보기

@model MvcApplication1.Models.MyClass 
@{ 
    ViewBag.Title = "Home"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Home</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(m => m.Text) 
} 

컨트롤러

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(MyClass data) 
    { 
     return View(data); 
    } 
} 

모델

public class MyClass 
{ 
    public string Text { get; set; } 
} 

그래서, 문제는 somewhe해야합니다 또 다른 ... 렌더링되는 값을 엉망으로 만들 수있는 무언가 (편집기 템플릿, 자바 스크립트)

렌더링 된 페이지의 소스를보고 올바른 값인지 확인하십시오. javascript가 아니면 그렇지 않으면 서버에 있어야합니다.

+0

이 미구엘을 들여다 볼 시간을내어 주셔서 감사합니다. 그것은 우리 자신의 문제였습니다. 나는 우리가 잘못한 것을 설명하기 위해 내 자신의 질문에 답할 것입니다. – Apogee