在内联代码ASP.NET中连接两个或多个字符串

时间:2011-10-05 23:30:32

标签: asp.net inline-code

我试图根据条件在名称旁边放置一个*。

我的代码:

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

由于

BB

6 个答案:

答案 0 :(得分:4)

我对内联代码并不熟悉,你的代码似乎有点复杂。 但我还需要连接Eval(“记录”)和文本。所以为了回答关于如何连接的问题,&符号为我工作。

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

希望这有助于任何人。

答案 1 :(得分:3)

如果您正在使用内联代码推动您可以轻松处理的限制,则可以始终编写函数。然后你可以做类似的事情:

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

这可以让你将一个复杂的表达式分解成它需要的许多行,这可能有点不那么尴尬。您可以在CodeBehind或任何其他类中使用函数。

如果您要绑定到您有权访问的类,则可以添加readonly属性。然后你可以做像Eval(“MyNewProperty”)这样的事情。

我用它来暴露我需要重用的格式。例如,Customer.CustomerFullName可能首先返回的姓氏为逗号(智能处理缺少一个或两个或两者的情况)加上可选标题,因为我的客户可能是医疗人员,其中一些人拥有博士和医学博士。

答案 2 :(得分:3)

对于简单的一次性场景,代码隐藏功能可以正常工作。

您可能还想考虑将它们编码为底层对象中的属性。

例如,如果生成的文本将在多个实例中使用,则需要使用不同的表单或控件对Evals进行多次编码。

我会在数据对象上创建一个属性,例如NameWithStatusStar,那么您的标签可以直接绑定到属性,其中包含Eval中的代码(“NameWithStatusStar”)

这比一系列表达更具描述性和可重用性,而且更容易更改(例如添加其他字段,更改公式等)。

答案 3 :(得分:3)

你可以这样做:

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

答案 4 :(得分:1)

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

这在我的项目中对我有用。在这里找到它:

Concatenate text with Eval

答案 5 :(得分:-1)

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

这在我的项目中对我有用。在这里找到它:

Concatenate text with Eval

相关问题