WebForms व्यू इंजन के साथ, मैं आमतौर पर बहुत ही साधारण कंडीशंस के लिए, विशेष रूप से HTML विशेषताओं के लिए टर्नेरी ऑपरेटर का उपयोग करता हूँ। उदाहरण के लिए:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
उपर्युक्त कोड <a>
टैग को उपयोगकर्ता के प्रमाणित होने पर auth
या anon
उसके आधार पर एक वर्ग देगा ।
रेजर व्यू इंजन के साथ बराबर सिंटैक्स क्या है? क्योंकि रेजर को कोड और मार्कअप में कूदने के लिए "टैग" करने के लिए 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);
}
जिसे रेजर से इस तरह बुलाया जा सकता है:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
फिर भी, मैं उम्मीद कर रहा हूं कि एक विस्तार विधि में इसे लपेटकर वापस गिरने के बिना टर्नरी ऑपरेटर का उपयोग करने का एक तरीका है।
IHtmlString
new HtmlString("Some stuff here");