2011-10-05 14 views
6

条件に基づいて名前の横に*を配置しようとしています。インラインコードASP.NETで2つ以上の文字列を連結する

マイコード:

<asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label> 

おかげ

BB

+0

表示されている出力またはエラーは何ですか? –

答えて

3

あなたは簡単にインラインコードを扱うことができるものの限界をプッシュしている場合は、常に代わりに関数を書くことができます。これは、あなたが少し厄介なことができ、それはする必要がありますが、多くの行の中に複雑な式を破ることができます

<asp:Label ID="lblOne" runat="server" Text= '<%# EmitSomeText(Eval("name"), Eval("StatusId"), Eval("assignfilename")) %>' /> 

:次に、あなたのような何かを行うことができます。 CodeBehindまたは他のクラスで関数を使用することができます。

アクセス権を持つクラスにバインドする場合は、readonlyプロパティを追加できます。次に、Eval( "MyNewProperty")のようなことをすることができます。

私はそれを私が再利用する必要があるフォーマットを公開するために使用します。たとえば、顧客が医療関係者でPhDとMDがある場合など、Customer.CustomerFullNameは姓が最初にカンマ(別の場所または両方が欠けている状況をインテリジェントに処理)とオプションのタイトルで区切って返されます。

3

シンプルな1回限りのシナリオでは、コードビハインド機能は正常に機能します。

また、それらを基礎となるオブジェクトのプロパティとしてコーディングすることも考えられます。

たとえば、生成されるテキストが複数のインスタンスで使用される場合は、Evalsを使用してさまざまなフォームまたはコントロールで関数を何度もコーディングする必要があります。

データオブジェクトにプロパティを作成します。 NameWithStatusStarの場合、ラベルはEval( "NameWithStatusStar")内のコードを持つプロパティに直接バインドできます

これは一連の式よりも説明的で再利用可能ですし、さらに簡単に変更できます数式など)

4

私は実際にインラインコードに慣れていないので、コードは少し複雑に思えます。 しかし、Eval( "レコード")とテキストを連結する必要もあります。そこで、どのように連結するかという質問に答えるために、アンパサンドが私のために働いていました。

'<%# Eval("name") & " *" %>' 

これが誰にも役立つことを願っています。

2

あなたはこのようにそれを行うことができます。

Text='<%#"CustomText "+Eval("Name")%>' 
+0

もう少し詳しい文脈を提供すればもっと役に立ちます。 – gpgekko

-1
Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>' 

これは私のプロジェクトで私のために働きました。ここでそれを見つけた:

Concatenate text with Eval

+4

複数の質問に同じ回答を投稿しないでください。 1つの良い答えを投稿し、投票/フラグを立てて他の質問を重複として閉じます。質問が重複でない場合は、*あなたの質問に対する回答を調整してください。* –

1
Text='<%#String.Concat(Eval("UserId"), Eval("Username")) %>' 

をこれが私のプロジェクトで私のために働きました。見つかりました:

Concatenate text with Eval

関連する問題