我正在从 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[]。它被转换成字符串。