ASP.NET Eval字节数组作为字符串

时间:2012-10-03 16:50:48

标签: asp.net listview data-binding bytearray eval

我正在从EntityDataSource构建ListView。有一个名为Sha1Hash的Byte []字段,我需要转换为超链接的String类型。这是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 []。它被强制转换为字符串。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我使用

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

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