我试图运行一个需要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());
答案 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。