使用按钮中的命令参数,输入字符串的格式不正确

时间:2016-05-27 04:19:08

标签: c# asp.net

在这里,我尝试在单击按钮btndownloadpost时更新数据库中的一个dwncount列的下载次数。点击它显示的按钮

  

"输入字符串的格式不正确"行中的错误int countid =   Convert.ToInt32(e.CommandArgument.ToString());

db中的countid和dwncount列是int数据类型。 以下是我使用的完整代码。

按钮如下所示

<div>
<asp:Button ID="btndownloadpost" CommandName="download" CommandArgument='<%#Eval("countid") %>' CssClass="btn btn-info" runat="server" Text="Download " OnCommand="btndownloadpost_Command" />
</div>

按钮后面的代码

 protected void btndownloadpost_Command(object sender, CommandEventArgs e)
{
    if (e.CommandName== "download")
    {
        int countid = Convert.ToInt32(e.CommandArgument.ToString());
        int i = c.updatedwncount(countid, Convert.ToInt32(ViewState["click"]));
        if (i > 0)
        {

            if (ViewState["click"] != null)
            {
                count = (int)ViewState["click"] + 1;
            }
            ViewState["click"] = count;
            Label18.Text = "Updated ";
        }


    }
}

使用的方法

 public int updatedwncount(int countid, int dwncount)
{
    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["myconnection"].ConnectionString);
    string sql = "update tbltry set dwncount=dwncount+1 where countid=@countid";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@dwncount", dwncount);
    cmd.Parameters.AddWithValue("@countid", countid);
    try
    {
        con.Open();
        return cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        con.Close();
    }
}

2 个答案:

答案 0 :(得分:0)

使用TryParse而不是Convert.ToInt32:

int countid;
int.TryParse(e.CommandArgument.ToString(), out countid);

如果Eval表达式暗示输入无法转换为int,则Convert.Int32方法将发出异常。另一方面,TryParse将返回boolean值,可以在下一个执行计划中进行评估。

参考:Parsing String: Input string was not in a correct format. #

答案 1 :(得分:0)

我认为您的countid为空。因此检查Null值然后将其解析为int。

int countid = String.IsNullOrEmpty(e.CommandArgument.ToString()) ? 0 : Convert.ToInt32(e.CommandArgument.ToString());