>source

컨트롤러에서 JSON 파일을 구문 분석하고 있으며 try/catch 기능이 있습니다. JSON에 대한 캐치가 ViewBag를 채우고 오류가 있는 경우 보기에 인쇄하고 싶습니다. 그러나 ViewBag.Error는 화면에 인쇄되지 않습니다. 나는보기에 침입했고 문자열이 거기에 있습니다. 그냥 인쇄되지 않습니다.

컨트롤러의 관련 code입니다.

catch (JsonReaderException jex)
{
            ViewBag.Error= "JSON Parsing Error: " + jex.Message;
            return View();
 }

제 생각은 이렇습니다.

@if ((string)ViewBag.Error != "")
{
   @Html.Label((string)ViewBag.Error)<br>}

@Html.Label을 오해하고 있습니다. 직접 인쇄하면 됩니다.

SLaks2021-11-24 21:46:23

@SLak 그는 그것을 스타일링에 사용할 수도 있지만 의심스럽습니다. 동적 유형의 캐스트는 필요하지 않습니다. 여전히 텍스트 인쇄를 중지해서는 안됩니다.

Yuriy Faktorovich2021-11-24 21:46:23

레이블 대신 @Html.Raw를 사용하고 시도해 볼 수 있습니까? @Html.Raw((string)ViewBag.Error)와 같은 것

ISHIDA2021-11-24 21:46:23

@ISHIDA: XSS 구멍입니다. 그러지 마세요.

SLaks2021-11-24 21:46:23

@SLaks 동의하지만 그는 데이터를 입력하지 않고 단지 표시하고 있습니다(그의 질문에 있는 레이블입니다).

ISHIDA2021-11-24 21:46:23
  • 답변 # 1

    ViewData 및 TempData는 유형 변환 및 null 검사가 필요하지만 ViewBag는 이러한 검사가 필요하지 않습니다.

    자세한 정보에 관심이 있는 경우 여기를 참조하십시오.

    따라서 다음과 같이 간단히 작성할 수 있습니다.

     @ViewBag.Error
    

    오류 메시지를 표시할 위치.

    도움이 되셨길 바랍니다

    감사합니다

    카르틱

  • 답변 # 2

    예외 메시지의 마침표(.) 문자에 문제가 있습니다. json 예외 메시지를 보면 일반적으로 그 안에 점(.)이 있습니다.

    HTML 레이블 요소는 포인트가 있으면 혼란스러워집니다. 첫 번째 매개변수에 속성 표현식이 있어야 하기 때문입니다.

    사용레이블(문자열 표현식, 문자열 labelText)대신.
    전:@Html.Label("",ViewBag.Error)

    @sLaks가 지적했듯이 ..HTML.Raw는 이 용도로 사용하기에 적절한 요소가 아닙니다.

  • 답변 # 3

    값을 직접 인쇄해야 합니다.

    @ViewBag.Error
    

    전화하지 마세요값이 HTML이 아니기 때문에 Html.Raw().

  • 이전 JavaScript ES6에서 iterable과 iterator의 차이점은 무엇입니까?
  • 다음 혼동 행렬을 작성하기 위해 샘플 GLMNET LogReg 결과를 확인하는 방법은 무엇입니까?