【问题标题】:Parsing String: Input string was not in a correct format. #解析字符串:输入字符串的格式不正确。 #
【发布时间】:2014-12-05 15:28:17
【问题描述】:

我正在尝试运行需要 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());

【问题讨论】:

  • 您要转换的价值是多少?
  • 您的字符串格式不正确,也就是说,如果是 abcde 之类的东西,因此不能解释为 int。
  • 您是否设置了断点并尝试查看您在 "d.CommandArgument" 中得到了什么值?
  • 你为什么不简单地调试你的代码?
  • d.CommandArgument.ToString() 返回什么,显然不是有效的 int。

标签: c# asp.net string parsing int


【解决方案1】:

在回答您的问题时,“有没有更好的方法来做到这一点”?

是的,它叫TryParse

int iD = 0;

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

说明

您是在暗示(使用基本的Convert 方法)输入可以 转换为Int32,这就是为什么当它不能转换时会出现异常。使用我上面建议的方式,您只是在尝试解析它。 TryParse 返回 boolean,然后您可以评估以决定执行路径。

【讨论】:

  • 嗯,这将确保有一个检查到位 - 但它不会影响您传递它的输入(即转换仍然没有发生)。请注意这一点。
【解决方案2】:

这里有一个错字:

<$# Eval("ID") %>

应该是

<%# Eval("ID") %>

因此,您尝试将字符串值 &lt;$# Eval("ID") %&gt; 转换为整数,这将失败并抛出您收到的错误。由于拼写错误,该字段不会绑定到 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-08-22
    相关资源
    最近更新 更多