我正在使用datagrid,我有<asp:TemplateField>
我已经传递了一些参数,代码如下:
<asp:TemplateField HeaderText="Download">
<ItemTemplate>
<asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%#"~/logout.aspx?ID="+Eval("ID")+"&category=mobile"%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
我有数字字段(ID),我需要通过URL发送我试图发送字符串类型数据和它的工作正常,但我发送数字类型(ID)我面临这个错误
从字符串“〜/ logout.aspx?ID =”转换为“Double”类型无效
我知道我需要在Eval("ID")
附近的语法中进行更改。我该如何在查询字符串中发送数字数据?
由于
答案 0 :(得分:3)
<asp:TemplateField HeaderText="Download">
<ItemTemplate>
<asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%# String.Format("~/logout.aspx?ID={0}&category=mobile", Eval("ID")) %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
答案 1 :(得分:2)
<%#
语法应仅用于评估特定数据项。您正试图在<%#
中构建整个字符串,这是不必要的,因为大多数数据都是静态的。
为了确定您在ID
特定方案中收到错误的原因,您可能会因为绑定string
中包含完整项double
和<%#
信息它使用Eval
语句的类型来确定整个部分应该是什么。在您的情况下,它会查看Eval("ID")
的值并知道它是double
,然后期望绑定结果为double
。问题在于您将string
和double
联系在一起,以便根据string
中的预期类型返回无效的Eval
。
当您的数据发送到querystring
时,它是string
。当您使用QueryString
对象解析它时,它也会返回一个字符串。你可以发布解析querystring
的代码吗?
如果您的代码没有检查空值或执行TryParse
,那么您可能会遇到错误。请记住,任何人都可以操纵这些数据,因此您应该验证它是否属于正确类型。
例如:
Dim yourValue As Double = 0
If Double.TryParse(Request.QueryString("id"), yourValue) = False Then
ShowError("Invalid id supplied.")
Return
End If