Programing

면도기에서 삼항 연산자를 사용하는 방법 (특히 HTML 특성)?

lottogame 2020. 2. 25. 22:03
반응형

면도기에서 삼항 연산자를 사용하는 방법 (특히 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")">

이것을 시도하십시오. 행운을 빈다.

참고 URL : https://stackoverflow.com/questions/4091831/how-to-use-ternary-operator-in-razor-specifically-on-html-attributes



반응형