快捷方式服务器端代码块

时间:2014-12-02 13:34:00

标签: c# asp.net

我正在开发一个asp.net页面,我需要在超链接的href中添加一个可选参数。参数值在代码隐藏中。

这是超链接:

<a href='FileView.aspx?fid=<%#Eval("FileOrFolderID") %>&uid=<%=UserID %> <%=(ProfileType.HasValue && ProfileId.HasValue?"&profiletype=" + (int)ProfileType.Value + "&profileid=" + ProfileId.Value:"") %>'
                                        <%#Convert.ToBoolean(Eval("IsFolder")) ? "style='display:none;'" : "style='display:block;'" %>
                                        id="aDownLoad">
                                        <%# Eval("Name").ToString().HE()%></a>

我想补充一点:

<%=(Convert.ToBoolean(Eval("IsFolder")) ? "" :  "&id=" + CurrentID) %>

所以它看起来像这样:

<a href='FileView.aspx?fid=<%#Eval("FileOrFolderID") %>&uid=<%=UserID %> <%=(Convert.ToBoolean(Eval("IsFolder")) ? "" :  "&id=" + CurrentID) %> <%=(ProfileType.HasValue && ProfileId.HasValue?"&profiletype=" + (int)ProfileType.Value + "&profileid=" + ProfileId.Value:"") %>'
                                        <%#Convert.ToBoolean(Eval("IsFolder")) ? "style='display:none;'" : "style='display:block;'" %>
                                        id="aDownLoad">
                                        <%# Eval("Name").ToString().HE()%></a>

但是给出了这个错误:

An exception of type 'System.InvalidOperationException' occurred in System.Web.dll but was not handled in user code

Additional information: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

请建议解决此问题

1 个答案:

答案 0 :(得分:0)

只有在您的控件绑定到数据源时才能使用Eval和Bind,这似乎并非如此。 使用服务器控件:

<asp:HyperLink runat="server" ID="link" />

并在后面的代码上设置它的NavigationUrl属性。