[asp.net] 사용하는 방법 ? : Razor 및 인라인 코드 블록이있는 if 문

새 Razore보기 엔진으로 이전 .aspx보기를 업데이트하고 있습니다. 다음과 같은 코드가있는 곳이 많이 있습니다.

<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span>

이상적으로 나는 이것을하고 싶습니다 :

<span class="vote-up@{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span>

그러나 여기에는 두 가지 문제가 있습니다.

  1. vote-up@{puzzle.UserVote …. @ 기호를 코드 블록의 시작으로 취급하지 않습니다
  2. @puzzle.UserVote == VoteType.Up@puzzle.UserVote변수의 값을 렌더링하는 것처럼 첫 번째 부분 을 봅니다.

이 문제를 해결하는 방법을 아는 사람이 있습니까?



답변

이것은 작동해야합니다 :

<span class="vote-up@(puzzle.UserVote == VoteType.Up ? "-selected" : "")">Vote Up</span>


답변

핵심은 @ 구분 기호 뒤에 식을 괄호로 묶는 것입니다. 이런 식으로 복합 표현식을 작동시킬 수 있습니다.


답변

@( condition ? "true" : "false" )


답변

대부분의 경우 CD 솔루션 은 완벽하게 작동합니다. 그러나 나는 조금 더 왜곡 된 상황을 겪었습니다.

 @(String.IsNullOrEmpty(Model.MaidenName) ? "&nbsp;" : Model.MaidenName)

이렇게하면 “& nbsp;”가 표시됩니다. 내 페이지에서 각각 source를 생성하십시오 &amp;nbsp;. 이제이 Html.Raw("&nbsp;")별자리에서 컴파일러 오류가 발생하는 것을 제외하고 소스 코드를 작성할 수 있는 기능 이 있습니다.

컴파일러 오류 메시지 : CS0173 : ‘System.Web.IHtmlString’과 ‘string’사이에 암시 적 변환이 없으므로 조건식 유형을 확인할 수 없습니다.

그래서 나는 다음과 같은 진술을 작성하게되었습니다. 이는 좋지 않지만 제 경우에도 작동합니다.

@if (String.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw("&nbsp;") } else { @Model.MaidenName } 

참고 : 흥미로운 것은 중괄호 안에 들어가면 Razor 블록을 다시 시작해야한다는 것입니다.


답변