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

问题描述 投票:4回答:3

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

<asp:HyperLink ID="lb" 
               runat="server" 
               Text='<%#Eval("Key.Id") %>' 
               NavigateUrl='ViewItem.aspx?id=' + '<%# Eval("Key.Id") %>'/>
asp.net gridview
3个回答
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
投票

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

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

[CS代码隐藏]

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

-2
投票

试试这个:

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

您不需要连接

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.