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>
아직도, 나는 확장 방법으로 감싸지 않고 삼항 연산자를 사용할 수있는 방법이 있기를 바랍니다.
IHtmlString
와 마찬가지로new HtmlString("Some stuff here");
도우미 등을위한 방법 으로 유형 을 반환해야한다고 생각합니다 .