면도기에서 삼항 연산자를 사용하는 방법 (특히 HTML 특성)?
WebForms 뷰 엔진을 사용하면 특히 HTML 속성 내에서 매우 간단한 조건에 삼항 연산자를 사용합니다. 예를 들면 다음과 같습니다.
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
위의 코드를 제공한다 <a>
태그에게의 클래스 auth
또는 anon
사용자가 인증되었는지 여부에 따라.
Razor 뷰 엔진과 동등한 구문은 무엇입니까? Razor는 코드와 마크 업을 시작할 때 "알고"HTML 태그가 필요하기 때문에 현재 다음과 같은 문제가 있습니다.
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
이것은 약간 끔찍하다 .
나는 이와 같은 일을하고 싶지만 면도기의 방법을 이해하는 데 어려움을 겪고 있습니다.
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
-
최신 정보:
그 동안이 HtmlHelper를 만들었습니다.
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
Razor에서 다음과 같이 호출 할 수 있습니다.
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
아직도, 나는 확장 방법으로 감싸지 않고 삼항 연산자를 사용할 수있는 방법이 있기를 바랍니다.
@()
표현식 구문 을 사용할 수 있어야 합니다.
<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>
그러나 Razor를 설치하지 않았으므로 잘못 될 수 있습니다.
추가:
중요한 개념은 Razor 코드에서 표현식을 평가한다는 것입니다. 이를 수행하는 가장 좋은 방법은 (예를 들어, foreach 루프에있는 경우) 일반적인 방법을 사용하는 것입니다.
Razor에서 일반 메소드를 호출하는 구문은 다음과 같습니다.
@(expression)
이 경우 표현은 다음과 같습니다.
User.Identity.IsAuthenticated ? "auth" : "anon"
따라서 해결책은 다음과 같습니다.
@(User.Identity.IsAuthenticated ? "auth" : "anon")
이 코드는 html 속성뿐만 아니라 Razor의 어느 곳에서나 사용할 수 있습니다.
C # Razor Syntax Quick Reference (Phil Haack의 블로그)에 대한 @Kyralessa의 의견을 참조하십시오.
눈을 쉽게하기 위해 더 간단한 버전!
@(true?"yes":"no")
VB 면도기와 함께 ASP.net을 사용하는 사용자에게는 삼항 연산자도 가능합니다.
또한 면도기 식 안에 있어야합니다.
@(Razor_Expression)
삼항 연산자는 다음과 같이 작동합니다.
If(BooleanTestExpression, "TruePart", "FalsePart")
VB 면도기와 함께 여기에 표시된 동일한 코드 예제는 다음과 같습니다.
<a class="@(If(User.Identity.IsAuthenticated, "auth", "anon"))">My link here</a>
참고 : TextExpression을 작성할 때 부울 기호는 C #과 VB간에 동일하지 않습니다.
내 문제에서 내 <a>text</a>
보기 내부 의 앵커 텍스트가 어떤 값을 기반으로하고 텍스트가 검색 된 양식을 원합니다.App string Resources
그래서 이것은 @()
해결책입니다
<a href='#'>
@(Model.ID == 0 ? Resource_en.Back : Resource_en.Department_View_DescartChanges)
</a>
텍스트가 App string Resources
사용 되지 않은 경우
@(Model.ID == 0 ? "Back" :"Descart Changes")
이 방법을 사용할 수도 있습니다.
<input type="text" class="@(@mvccondition ? "true-class" : "false-class")">
이것을 시도하십시오. 행운을 빈다.
'Programing' 카테고리의 다른 글
Java에서 코어 수 찾기 (0) | 2020.02.25 |
---|---|
당신은 어떻게 사용합니까? (0) | 2020.02.25 |
커밋을 푸시하지 않고 Travis-CI 재 구축을 트리거 하시겠습니까? (0) | 2020.02.25 |
jQuery로 5 초 동안 기다리는 방법? (0) | 2020.02.25 |
배열에서 고유하지 않은 모든 값 (예 : 중복 / 둘 이상의 발생)을 가져옵니다. (0) | 2020.02.25 |