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

时间:2012-01-26 21:18:19

标签: asp.net gridview

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

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

3 个答案:

答案 0 :(得分:3)

简短回答: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")) %>'/>

答案 1 :(得分:1)

这是我在网格视图中有这样的东西时所做的事情:

<img src='<%# GetDisImageLink(Eval("Disabilities").ToString()) %>' 
   alt="Disabilities" />

[CS code-behind]

public string GetDisImageLink(string dis)
{
    return "../../Content/Images/CardContactInfo/" + 
       (dis.Trim() == "Y" ? "DIS.png" : "Blank.png");
}

答案 2 :(得分:-2)

请改为尝试:

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

您不需要连接