解析字符串:输入字符串格式不正确。 #
我试图运行一个存储过程,需要一个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());
在回答你的问题时,“有没有更好的方法来做到这一点”?
是的,这就是所谓的TryParse
:
int iD = 0;
if(Int32.TryParse(d.CommandArgument.ToString(), out iD))
{
// Do something with iD
}
说明
你暗示(使用基本Convert
方法),输入可以转换为Int32
,这是为什么你不能得到例外。按照我上面提出的方式,你只是试图解析它。 TryParse
返回boolean
然后您可以评估以决定执行路径。
谢谢,这原来是一个修复它。 – 2014-12-05 15:40:11
嗯,这将确保有一个检查 - 但它不会影响你通过它的输入(即转换仍然没有发生)。请注意这一点。 – 2014-12-05 15:51:17
有一个错字那里开始:
<$# Eval("ID") %>
应该
<%# Eval("ID") %>
所以,你正试图将字符串值<$# Eval("ID") %>
转换为整数,这将失败并引发您收到错误。由于输入错误,该字段不会绑定到ID。
您试图转换的值是什么? – 2014-12-05 15:31:33
你的字符串格式不正确,这意味着,如果像'abcde'这样的东西不能被解释为int。 – mihai 2014-12-05 15:31:55
你有没有放置一个断点,并尝试看看你在“d.CommandArgument”中获得了什么值? – 2014-12-05 15:31:59