かみそりで(特にHTML属性で)三項演算子を使用するにはどうすればよいですか?
How Use Ternary Operators Razor
WebFormsビューエンジンの助けを借りて、私は通常、特にHTML属性で、非常に単純な条件に三項演算子を使用します。例えば:
My link here
上記のコードは、ユーザーが
マークオファーauth
またはanon
クラスとして認証されているかどうかに基づいています。
かみそり ビューエンジンの同等の構文は何ですか? Razorでは、コードとマークアップにジャンプするタイミングとジャンプするタイミングを「知る」ためにHTMLタグが必要なため、現在、次の点に固執しています。
@if(User.Identity.IsAuthenticated) { My link here } else { My link here }
率直に言って、これは 怖い 。
やりたいです そのような 物事、しかし私はかみそりでどのように理解しようとしています:
My link here
-
更新:
この間に、次のHtmlHelperを作成しました。
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse) { return MvcHtmlString.Create(condition ? ifTrue : ifFalse) }
Razorでは次のように呼び出すことができます。
My link here
ただし、一歩下がって拡張メソッドでラップすることなく、三項演算子を使用する方法があることを願っています。
#1階
ASP.netをVBかみそりで使用する場合は、三項演算子も使用できます。
それはまた、かみそりの表現でなければなりません:
@(Razor_Expression)
三項演算子は次のように機能します。
If(BooleanTestExpression, 'TruePart', 'FalsePart')
ここに示されているVBシェーバーを使用した同じコード例は次のとおりです。
My link here
注:TextExpressionを作成するときは、ブール記号がC#とVBで異なることに注意してください。
#2階
私の質問では、ビューにアンカーポイントが必要です text
値に基づいており、テキストはfrom App string Resources
取得済みです
だからこれ@()
解決策です
@(Model.ID == 0 ? Resource_en.Back : Resource_en.Department_View_DescartChanges)
テキストがfromでない場合App string Resources
これを使用
@(Model.ID == 0 ? 'Back' :'Descart Changes')
#3階
次の方法を使用することもできます。
@()
これを試してみてください..頑張っていただきありがとうございます。
#4階
My link here
式の構文を使用できるはずです:
@(expression)
ただし、Razorをインストールしなかったので、間違っている可能性があります。
#5階
付録:
重要な概念は、Razorコードで式を評価しているということです。最良の方法(たとえば、foreachループにいる場合)は、ジェネリックメソッドを使用することです。
Razorで一般的なメソッドを呼び出すための構文は次のとおりです。
User.Identity.IsAuthenticated ? 'auth' : 'anon'
この場合、式は次のとおりです。
@(User.Identity.IsAuthenticated ? 'auth' : 'anon')
したがって、解決策は次のとおりです。
@(true?'yes':'no')
このコードは、html属性だけでなく、Razorのどこでも使用できます。
C#Razor構文のクイックリファレンスについては、@ Kyralessaのコメント(Phil Haackのブログ)を参照してください。
#6階
シンプルなバージョンで目が楽に!
|_+_|