我正在从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 []。它被强制转换为字符串。
答案 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 []。