将QueryString中的多个值传递给ASP.NET中的新页面

时间:2013-04-09 08:51:53

标签: asp.net query-string

我在StackOverflow上寻找其他解决方案,但我似乎无法弄明白。 我在datagrid中有这个linkbutton:

    <asp:LinkButton 
        ID="lnkname" runat="server"
        Text='<%#Eval("Titel") %>'
        PostBackUrl='<%#"Details.aspx?ID="+Eval("ID").toString()%>'
        CausesValidation="false">
    </asp:LinkButton>

这是参数:

<asp:ControlParameter ControlID="txtTitel" DefaultValue="*" Name="Titel" 
PropertyName="Text" Type="String" ConvertEmptyStringToNull="False" />

我想将ID值带到下一页:details.aspx但是我收到以下错误:

  

输入字符串的格式不正确。   描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

Exception Details: System.FormatException: Input string was not in a correct format.

我知道它与ID有关,但是我无法弄清楚如何修复它。

注意:我在VB.NET中这样做

2 个答案:

答案 0 :(得分:2)

将其转换为字符串

时出现问题
+Eval("ID").toString()

使用此

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID").ToString() %>'

.toString()应为ToString()

编辑1

或者您可以使用

Try using a HyperLinkField

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlinkfield.aspx

<asp:HyperLinkField
                 HeaderText="Client IP"
                 DataNavigateUrlFields="IP"
                 DataNavigateUrlFormatString="Details.aspx?id={0}"
                 DataTextField="ID"
                 DataTextFormatString="{0}"/>

答案 1 :(得分:0)

如果您需要传递多个参数,则可以在它们之间使用&例如

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID")+"&x=50" %>'

重要

每当您将Eval("ID")值之类的任何类型的变量连接(加入)到"Details.aspx?ID="之类的字符串时,您不需要编写ToString()进行强制转换,因为连接会进行此转换隐含地(自动地)。我确定C#VB.NET

的这种行为

所以你可以写简单

PostBackUrl='<%# "Details.aspx?ID="+Eval("ID") %>'