새 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>
그러나 여기에는 두 가지 문제가 있습니다.
vote-up@{puzzle.UserVote
…. @ 기호를 코드 블록의 시작으로 취급하지 않습니다@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) ? " " : Model.MaidenName)
이렇게하면 “& nbsp;”가 표시됩니다. 내 페이지에서 각각 source를 생성하십시오 &nbsp;
. 이제이 Html.Raw(" ")
별자리에서 컴파일러 오류가 발생하는 것을 제외하고 소스 코드를 작성할 수 있는 기능 이 있습니다.
컴파일러 오류 메시지 : CS0173 : ‘System.Web.IHtmlString’과 ‘string’사이에 암시 적 변환이 없으므로 조건식 유형을 확인할 수 없습니다.
그래서 나는 다음과 같은 진술을 작성하게되었습니다. 이는 좋지 않지만 제 경우에도 작동합니다.
@if (String.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw(" ") } else { @Model.MaidenName }
참고 : 흥미로운 것은 중괄호 안에 들어가면 Razor 블록을 다시 시작해야한다는 것입니다.