在ASP.NET属性中组合字符串

我试图在属性中连接一个字符串.我收到一个错误.我认为这与我的Eval有关.有没有正确的方法来连接字符串,或者这是不可能的.我相信的问题是我设置NavigateUrl的地方.

<asp:HyperLink ID="lb" 
               runat="server" 
               Text='<%#Eval("Key.Id") %>' 
               NavigateUrl='ViewItem.aspx?id=' + '<%# Eval("Key.Id") %>'/>

最佳答案 简答:NavigateUrl =’<%#Eval(“Key.Id”,“ViewItem.aspx?id = {0}”)%>‘

更长的解释:

您的代码中的问题是您只对部分Web控件属性使用数据绑定表达式.您需要移动数据绑定表达式中的所有内容.

首先,数据绑定表达式是这样的:

<%# EXPRESSION %>

基本上,对Web控件属性使用数据绑定表达式的规则是表达式必须是属性中的唯一内容:

<asp:HyperLink ID="lb" runat="server" 
  Text='<%# EXPRESSION %>'
  NavigateUrl='<%# EXPRESSION %>' />

所以你的第一个属性Text是正确的.但是你的第二个属性NavigateUrl不正确.因为你把ViewItem.aspx?id =作为属性的值,留下’<%#Eval(“Key.Id”)%>‘在任何属性之外,但在控制标记内.

这是正确的语法:

<asp:HyperLink ID="lb" runat="server" 
  Text='<%# Eval("Key.Id") %>' 
  NavigateUrl='<%# Eval("Key.Id", "ViewItem.aspx?id={0}") %>'/>

请注意,我们使用格式字符串作为Eval()的第二个参数.这相当于以下更明确的语法:

<asp:HyperLink ID="lb" runat="server" 
  Text='<%# Eval("Key.Id") %>' 
  NavigateUrl='<%# String.Format("ViewItem.aspx?id={0}", Eval("Key.Id")) %>'/>
点赞