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,但它需要是一个表示字节数组值的十六进制字符串。实现这一目标的最佳方法是什么?理想情况下,我会完全在 .aspx 页面中完成此操作,而不是在后面的代码中。

更新:我通过使用解决了这个问题

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

我的问题是我需要将 Eval() 转换为 byte[]。它被转换成字符串。

4

2 回答 2

0

根据您想要的格式,您可能正在寻找Convert.ToBase64String()BitConverter.ToHexString().

于 2012-10-03T16:53:09.110 回答
0

我通过使用解决了这个问题

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

我的问题是我需要将 Eval() 转换为 byte[]。

于 2012-10-04T13:41:08.723 回答