亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在剃須刀中使用三元運算符(特別是在HTML屬性上)?

如何在剃須刀中使用三元運算符(特別是在HTML屬性上)?

肥皂起泡泡 2019-11-22 12:55:38
借助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>不過,我希望有一種使用三元運算符的方法,而不必退一步將其包裝在擴展方法中。
查看完整描述

3 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

您應該能夠使用@()表達式語法:


<a class="@(User.Identity.IsAuthenticated ? "auth" : "anon")">My link here</a>

不過,我沒有安裝Razor,所以我可能是錯的。


查看完整回答
反對 回復 2019-11-22
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

附錄:

重要的概念是您正在評估Razor代碼中的表達式。最好的方法(例如,如果您處于foreach循環中)是使用通用方法。


在Razor中調用通用方法的語法為:


@(expression)

在這種情況下,表達式為:


User.Identity.IsAuthenticated ? "auth" : "anon"

因此,解決方案是:


@(User.Identity.IsAuthenticated ? "auth" : "anon")

此代碼可以在Razor中的任何地方使用,而不僅僅是html屬性。


有關C#Razor語法快速參考,請參見@Kyralessa的評論(Phil Haack的博客)。


查看完整回答
反對 回復 2019-11-22
  • 3 回答
  • 0 關注
  • 514 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號