我目前正在学习.net,并试图实施网址报告。“/ p>
我的大部分工作正常,但我正在尝试根据数据库中的信息生成超链接。
我使用以下方法获取数据:
'portfolio navigation data
Dim rdrPortfolioNav As SqlDataReader
Dim cmdPortfolioNav As SqlCommand = New SqlCommand()
cmdPortfolioNav.CommandText = "SELECT TOP 6 [id], [date], [client], [category], [title], [body], [website], [navimage], [navdesc] FROM [portfolio] ORDER BY [date] DESC"
cmdPortfolioNav.CommandType = CommandType.Text
cmdPortfolioNav.Connection = boomSQL
cmdPortfolioNav.Connection.Open()
rdrPortfolioNav = cmdPortfolioNav.ExecuteReader(CommandBehavior.CloseConnection)
lvPortfolioNav.DataSource = rdrPortfolioNav
lvPortfolioNav.DataBind()
cmdPortfolioNav.Dispose()
在前端,我可以使用以下方式访问数据并显示所有记录:
<asp:ListView ID="lvPortfolioNav" runat="server">
<ItemTemplate>
<div class="work">
<asp:HyperLink runat="server" NavigateUrl="portfolio/<%# DataBinder.Eval(Container.DataItem, "id")%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, "category")) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, "title")) %>" ToolTip=""><span class="title"><%# DataBinder.Eval(Container.DataItem, "title")%></span></asp:HyperLink>
<asp:Image runat="server" ImageUrl="<%# DataBinder.Eval(Container.DataItem, "navimage")%>" AlternateText="<%# DataBinder.Eval(Container.DataItem, "client")%>" ToolTip="<%# DataBinder.Eval(Container.DataItem, "client")%>" />
<span class="desc"><%# DataBinder.Eval(Container.DataItem, "navdesc")%></span> </div>
</ItemTemplate>
问题在于这一行:
<asp:HyperLink runat="server" NavigateUrl="portfolio/<%# DataBinder.Eval(Container.DataItem, "id")%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, "category")) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, "title")) %>" ToolTip=""><span class="title"><%# DataBinder.Eval(Container.DataItem, "title")%></span></asp:HyperLink>
它不会从数据库中获取值,而在html中,链接字面上显示为:
<a href="../../portfolio/%3C%25#%20DataBinder.Eval(Container.DataItem,%20%22id%22)%25%3E/%3C%25%23%20FormatLinks(DataBinder.Eval(Container.DataItem,%20%22category%22))%20%25%3E/%3C%25%23%20FormatLinks(DataBinder.Eval(Container.DataItem,%20%22title%22))%20%25%3E"><span class="title">Kingston Bagpuize House Website</span></a>
同样的事情对于ImageUrl工作正常,所以不确定我做错了什么。
我知道你可以在后端代码中做一些事情来生成网址,但是我无法在互联网上找到任何东西......帮助会非常感激。
感谢。
学家
答案 0 :(得分:1)
您不应该使用#in并在NavigateURL中写入&lt;%。
请遵循以下示例
http://www.extremeexperts.com/Net/FAQ/PassingMulitpleParameterinURLLink.aspx
答案 1 :(得分:0)
为什么不将URL构建在代码中呢?
而不是在前端完成所有工作前端:
NavigateUrl ='&lt;%#this.BuildURL(DataBinder.Eval(Container.DataItem,“id”),DataBinder.Eval(Container.DataItem,“category”), DataBinder.Eval(Container.DataItem,“title”))'
在codebehind中:
public string BuildURL(string a,string b,string c){ / *使用字符串构建器连接字符串并返回* /}
您仍然必须绑定控件每次绑定链接时,将使用适当的值调用方法,并且完成的字符串将返回到NavigateURL。
答案 2 :(得分:0)
我这样做
NavigateUrl ='&lt;%#“〜/ ProductList.aspx?ITEMSUBCATID =”+ DataBinder.Eval(Container.DataItem,“ITEMSUBCATID”)%&gt;'