かみそりで(特に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階

シンプルなバージョンで目が楽に!

|_+_|