解析字符串:输入字符串的格式不正确。 #

时间:2014-12-05 15:28:18

标签: c# asp.net string parsing int

我试图运行一个需要int才能正常工作的存储过程。我拉了一个" ID"从数据网格,然后我试图解析int以允许程序运行,但我得到标题中提到的错误。有关更好的方法的任何想法吗?

<asp:BoundColumn DataField="ID" Visible="true"></asp:BoundColumn>

<asp:Button ID="btnMarkComplete" Text="Mark Complete" runat="server" CommandArgument='<$# Eval("ID") %>' OnClick="BtnMarkCompleteClick"/>
                        </ItemTemplate>


int iD = Convert.ToInt32(d.CommandArgument.ToString());

2 个答案:

答案 0 :(得分:2)

在回答你的问题时,“有更好的方法吗?”

是的,它被称为TryParse

int iD = 0;

if(Int32.TryParse(d.CommandArgument.ToString(), out iD))
{
   // Do something with iD
}

<强>解释

您暗示(使用基本的Convert方法)输入可以转换为Int32,这就是为什么当它可以'时获得异常的原因'吨。按照我上面提到的方式,你只是试图解析它。 TryParse返回boolean,然后您可以评估以确定执行路径。

答案 1 :(得分:2)

有一个错字开始:

<$# Eval("ID") %>

应该是

<%# Eval("ID") %>

所以你试图将字符串值<$# Eval("ID") %>转换为一个失败的整数并抛出你收到的错误。由于输入错误,该字段不会绑定到ID。