Asp.net 将十进制数据类型的值作为querystring传递时,输入字符串的格式不正确

Asp.net 将十进制数据类型的值作为querystring传递时,输入字符串的格式不正确,asp.net,vb.net,Asp.net,Vb.net,我们的数据库中有以下数据类型为decimal的字段名: RentalFee ExtraHourFee CancelFee KeyDeposit 当试图将它们的值作为querystring从一个页面传递到另一个页面时,我们遇到了输入字符串格式不正确的错误 以下是标记的一个片段: <asp:TemplateField HeaderText="Select" SortExpression="siteid"> <ItemTemplate> <asp:HyperLi

我们的数据库中有以下数据类型为decimal的字段名:

RentalFee
ExtraHourFee
CancelFee
KeyDeposit
当试图将它们的值作为querystring从一个页面传递到另一个页面时,我们遇到了输入字符串格式不正确的错误

以下是标记的一个片段:

<asp:TemplateField HeaderText="Select" SortExpression="siteid">
  <ItemTemplate>
  <asp:HyperLink ID="hdReserve" Text="Select" runat="server" 
        NavigateUrl='<%# "Reserve.aspx?id=" + Eval("siteId") + "&groupsize=" + ddlPartySize.SelectedValue + "&facilityFees= " + Eval("RentalFeeAmount") + "&facilityFees= " + Eval("RentalFeeAmount") + "&depoitAmt= " + Eval("DepositAmount") + "&cancelAmt= " + Eval("CancellationAmount") + "&keydeptAmt= " + Eval("KeyDepositAmount") %>' /> 
  </ItemTemplate> 
</asp:TemplateField>

有什么办法可以解决这个问题吗?

我将使用以下方法,因为很难看到发生了什么:

 <asp:hyperlinkfield datatextfield="UnitPrice"
            datanavigateurlfields="siteId,groupsize,facilityFees"
            datanavigateurlformatstring="~/details.aspx?siteId={0}&groupsize={1}&facilityFees={2}"   />

我将使用以下内容,因为很难看到发生了什么:

 <asp:hyperlinkfield datatextfield="UnitPrice"
            datanavigateurlfields="siteId,groupsize,facilityFees"
            datanavigateurlformatstring="~/details.aspx?siteId={0}&groupsize={1}&facilityFees={2}"   />

除了Huchanoid的答案,你还需要对你的代码进行一些修改

首先,你说这些值是十进制的,但你把它们当作整数?它们是什么

接下来,什么是查询字符串不存在。。。有人只是键入页面名称。。。我想说,您需要检查这些值是否存在,然后将它们转换为整数(或十进制)。。。使用


除了Huchanoid的答案,你还需要对你的代码进行一些修改

首先,你说这些值是十进制的,但你把它们当作整数?它们是什么

接下来,什么是查询字符串不存在。。。有人只是键入页面名称。。。我想说,您需要检查这些值是否存在,然后将它们转换为整数(或十进制)。。。使用


在代码隐藏中执行

hdReserve.NavigateUrl = string.Format("../Reserve.aspx?id=?id={0}&groupsize={1}&facilityFees={2}...", siteId, ddlPartySize.SelectedValue, intExtraHourFee...)

在代码隐藏中执行

hdReserve.NavigateUrl = string.Format("../Reserve.aspx?id=?id={0}&groupsize={1}&facilityFees={2}...", siteId, ddlPartySize.SelectedValue, intExtraHourFee...)

可能是@Bjørn RogerKringsjå的复制品,我在发布之前查看了几个标题与我相同的帖子。是的,相同的标题但不同的问题。可能是@Bjørn RogerKringsjå的重复,我在发布之前回顾了几个标题相同的帖子。是的,标题相同,但问题不同。谢谢。这是我尝试过的代码,但由于其中一个名称-值对出现问题,我放弃了它。ddlPartySize.SelectedValue不是数据库字段名,而是表单字段。谢谢。这是我尝试过的代码,但由于其中一个名称-值对出现问题,我放弃了它。ddlPartySize.SelectedValue不是数据库字段名,而是表单字段。我们不希望显示它是否为数字。我们只是想将查询字符串值转换为十进制,而不是显示消息。谢谢您的帮助好吧,那么您需要将它们转换为十进制CDec(您的查询字符串)而不是整数。但是,如果查询字符串不存在或不是数字,会发生什么?数据类型已经是十进制的,并且它们是预填充的。所以,用户不必手动输入数据。当我使用类似于huchonoid发布的hyerplink时,它正在工作。唯一让我困惑的是ddlPartySize。SelectedValue抱歉。。。你的命名惯例让我。。。以十进制表示的intRentalFee。。。每当我看到int,我就假定它是一个整数。但是如果有人在你的网站上输入Reserved.aspx会发生什么呢?我们不想显示它是否是数字。我们只是想将查询字符串值转换为十进制,而不是显示消息。谢谢您的帮助好吧,那么您需要将它们转换为十进制CDec(您的查询字符串)而不是整数。但是,如果查询字符串不存在或不是数字,会发生什么?数据类型已经是十进制的,并且它们是预填充的。所以,用户不必手动输入数据。当我使用类似于huchonoid发布的hyerplink时,它正在工作。唯一让我困惑的是ddlPartySize。SelectedValue抱歉。。。你的命名惯例让我。。。以十进制表示的intRentalFee。。。每当我看到int,我就假定它是一个整数。但是如果有人在你的网站上输入Reserved.aspx,会发生什么呢?
hdReserve.NavigateUrl = string.Format("../Reserve.aspx?id=?id={0}&groupsize={1}&facilityFees={2}...", siteId, ddlPartySize.SelectedValue, intExtraHourFee...)