私は現在 .net を学んでおり、URL のルーティングを実装しようとしてレンガの壁にぶつかっています。
ほとんどが正常に動作していますが、データベース内の情報からハイパーリンクを生成しようとしています。
次を使用してデータを正常に取得しています:
'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 でもうまくいくので、何が間違っているのかわかりません。
URLを生成するためにバックエンドコードで何かできることは知っていますが、私は一生インターネット上で何かを見つけることができません....助けていただければ幸いです。
ありがとう。
J.