0

EntityDataSource から ListView を構築しています。ハイパーリンクの文字列型に変換する必要がある Sha1Hash という Byte[] フィールドがあります。これは ItemTemplate のコード スニペットです。

<asp:HyperLink ID="hl_Document" runat="server"
    NavigateUrl='<%# string.Format("~/GetDocument.ashx?docId={0}", Eval("SHA1HASH") ) %>' 
    Text='<%# Eval("DOCUMENTNAME") %>' />

これは「~/GetDocument.ashx?docId=System.Byte[]」のような URL を生成していますが、バイト配列の値を表す 16 進文字列である必要があります。これを達成するための最良のアプローチは何ですか?理想的には、コード ビハインドではなく、.aspx ページでこれを完全に実行します。

更新: を使用してこの問題を解決しました

NavigateUrl='<%# string.Format("~/GetDocument.ashx?docId={0}", BitConverter.ToString((byte[])Eval("SHA1HASH")).Replace("-", string.Empty) ) %>'

私の問題は、Eval() を byte[] にキャストする必要があることでした。文字列にキャストされていました。

4

2 に答える 2

0

を使用してこの問題を解決しました

NavigateUrl='<%# string.Format("~/GetDocument.ashx?docId={0}", BitConverter.ToString((byte[])Eval("SHA1HASH")).Replace("-", string.Empty) ) %>'

私の問題は、Eval() を byte[] にキャストする必要があることでした。

于 2012-10-04T13:41:08.723 に答える
0

Convert.ToBase64String()必要な形式に応じて、おそらくまたはを探していますBitConverter.ToHexString()

于 2012-10-03T16:53:09.110 に答える