【问题标题】:Input string was not in a correct format in ASP.NET输入字符串在 ASP.NET 中的格式不正确
【发布时间】:2014-10-02 15:55:14
【问题描述】:

每次我运行以下代码时,它都会说“输入字符串的格式不正确”。我尝试了两种不同的方法,但仍然失败。我该如何解决这个问题?

protected void CEButton_Click(object sender, EventArgs e)
{
    Session["CE"] = CEDropDownList.Text;
}

【问题讨论】:

  • 在尝试解析值时通常会看到该错误消息,例如int.Parsedouble.Parse 等。您确定在发生此错误的位置显示正确的代码吗?
  • @AnthonyPegram 是的,因为它仅在我单击该按钮时才会发生,这就是该按钮事件下的全部内容
  • 明确一点,您是否在调试并且可以实际看到这行代码发生的异常?在 ASP.NET 中,当您单击按钮时,其他处理程序仍在运行。页面生命周期执行,如Page_Init、Page_Load、Page_PreRender。
  • @Seesharp,不,一定有你没有展示(或看到)的东西。只需将您的代码Session["CE"] = CEDropDownList.Text; 放入页面加载,看看是否出现错误。
  • 是的,当按下按钮时,会话值变为 System.Web.SessionState.HttpSessionState

标签: c# asp.net session drop-down-menu


【解决方案1】:

如果 CEDropDownList 是 Dropdown 控制类型,您将寻找 CEDropDownList.SelectedItem.Text

假设您的下拉列表如下所示:

<asp:DropDownList ID="CEDropDownList" runat="server">
      <asp:ListItem Value="foo">Bar</asp:ListItem>
</asp:DropDownList>

要获得 foo,您可以使用 CEDropDownList.SelectedItem.Text

要获得 Bar,您可以使用 CEDropDownList.SelectedItem.Value

【讨论】:

  • CEDropDownList 正在从 SQL 数据库中获取它的值
  • @Seesharp - 从 DB 填充时是否设置了 DataTextField 和 DataValueField?
  • @zeroef 在 MSDN 上引用 DDL 的 Text 属性:“获取或设置 ListControl 控件的 SelectedValue 属性。”我讨厌人们使用它,但这与使用 .SelectedValue 完全相同
  • @Servy - 我同意,但有时文本可能与值不同。由于问题缺乏细节,我提供了一种方法。
  • 无论哪种方式,这都是一个有争议的问题,因为它不会导致 OP 看到的错误。显然,正如另一个人的评论中所建议的那样,Page_Load 或类似的东西正在被解雇并在回发时中断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多