2010-12-03 4 views
1

私は現在、.netを学んでおり、URLルーティングを実装しようとするとレンガの壁になっています。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> 

問題がこれである私が使用して罰金からデータを取得しています

行:

<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のため正常に動作します。

私はあなたがバックエンドコードでURLを生成するために何かできることは知っていますが、私の人生はインターネット上の何かを見つけることはできません.....ヘルプは非常に高く評価されるでしょう。

ありがとうございました。

J.

答えて

1

あなたがで#を使用してNavigateURLで<%を書くべきではありません。

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

+0

この

NavigateUrl = '<%の# "〜/ ProductList.aspx?ITEMSUBCATID =" + DataBinder.Eval(Container.DataItem、 "ITEMSUBCATID")%>' のようにそれを行います提案され、変更されました:」ヒント=> "><%#DataBinder.Eval(Container.DataItem、" title ")%>しかし、まだエラーが表示されます:サーバータグが正常に作成されていません。 と同じ行。 – JBoom

+0

リンクごとにNavigateURLで二重引用符ではなく一重引用符に置き換えることはできますか。 –

0

のではなく、フロントエンドですべての仕事をして、次の例に従ってください、なぜ背後にあるコードでURLの建物を入れませんか?フロントエンドにおいて

NavigateUrl =」<%#this.BuildURL(DataBinder.Eval(Container.DataItem、 "ID")、DataBinder.Eval(Container.DataItem、 "カテゴリ")、 のDataBinder .Eval(Container.DataItem、 "タイトル"))」分離コードで

パブリックストリングBuildURL(文字列、列B、列C){ /*ストリングビルダーを使用して文字列を連結し戻します* /}

まだコントロールをバインドする必要がありますリンクがバインドされるたびに、メソッドは適切な値で呼び出され、完成した文字列はNavigateURLに返されます。

+0

こんにちは、これは最初にやりたかったことだと思いますが、私がそれに戻ったときにあなたの提案を試してみて、それがうまくいくかどうかを確認してください。ありがとう。 – JBoom

0

は、私が試した

関連する問題