2010-12-03 83 views
1

我目前正在学习.NET,并试图实现URL rounting来到一堵砖墙。ASP.NET 4访问数据适用于NavigateUrl

我大部分工作正常,但我试图从我的数据库中的信息生成超链接。

我了获取数据精细使用:

'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, &quot;id&quot;)%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;category&quot;)) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;title&quot;)) %>" ToolTip=""><span class="title"><%# DataBinder.Eval(Container.DataItem, "title")%></span></asp:HyperLink> 
     <asp:Image runat="server" ImageUrl="<%# DataBinder.Eval(Container.DataItem, &quot;navimage&quot;)%>" AlternateText="<%# DataBinder.Eval(Container.DataItem, &quot;client&quot;)%>" ToolTip="<%# DataBinder.Eval(Container.DataItem, &quot;client&quot;)%>" /> 
     <span class="desc"><%# DataBinder.Eval(Container.DataItem, "navdesc")%></span> </div> 
</ItemTemplate> 

问题是这样的line:

<asp:HyperLink runat="server" NavigateUrl="portfolio/<%# DataBinder.Eval(Container.DataItem, &quot;id&quot;)%>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;category&quot;)) %>/<%# FormatLinks(DataBinder.Eval(Container.DataItem, &quot;title&quot;)) %>" 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所以不知道我在做什么错。

我知道你可以在后端代码中做一些事情来生成网址,但我不能为我的生活找到互联网上的任何东西.....帮助将非常感激。

谢谢。

J.

回答

1

你不应该使用#和NavigateURL写<%。

按照下面的例子

http://www.extremeexperts.com/Net/FAQ/PassingMulitpleParameterinURLLink.aspx

+0

我试图如建议并更改为:”工具提示=“”><%#DataBinder.Eval(Container.DataItem,“title”)%>但我仍然得到错误:服务器标记形式不正确 在同一行上 – JBoom 2010-12-03 19:08:48

+0

你可以将它替换为单引号而不是双引号NavigateURL中的每个链接 – 2010-12-04 08:46:57

0

,而不是做所有的工作在前端,为什么不把URL大楼后面的代码?

在前端:

NavigateUrl =” <%#this.BuildURL(DataBinder.Eval的(的Container.DataItem, “ID”),的DataBinder.Eval(的Container.DataItem, “类别”), DataBinder的.Eval(的Container.DataItem, “标题”))”

在代码隐藏:

公共字符串BuildURL(字符串,字符串b,串c){ /*使用字符串生成器将字符串并返回* /}

您仍然必须绑定控件每次链接被绑定时,该方法将被调用适当的值,并且完成的字符串将返回到NavigateURL。

0

我不喜欢这样

NavigateUrl = '<%# “〜/ ProductList.aspx?ITEMSUBCATID =” +的DataBinder.Eval(的Container.DataItem, “ITEMSUBCATID”)%>'