C# 错误:输入字符串的格式不正确。“在eCommandArgument行C上。”

C# 错误:输入字符串的格式不正确。“在eCommandArgument行C上。”,c#,asp.net,C#,Asp.net,我在这个问题的标题上加了一个错误 下面的代码出错。输入字符串的格式不正确 错误发生在这一行: int index = Convert.ToInt32(e.CommandArgument.ToString()); 如何解决此错误 aspx页面: <asp:Content ID="MyMainPage" ContentPlaceHolderID="MMain" Runat="Server"> <div id="awindow" > <asp

我在这个问题的标题上加了一个错误

下面的代码出错。输入字符串的格式不正确

错误发生在这一行:

int index = Convert.ToInt32(e.CommandArgument.ToString());
如何解决此错误

aspx页面:

<asp:Content ID="MyMainPage" ContentPlaceHolderID="MMain" Runat="Server">
         <div id="awindow" >
     <asp:Panel ID="Panel1" runat="server" CssClass="main">
     <div style="width: 100%; float: left">    
         <asp:TextBox runat="server"  style="margin-left:5px; float:left;" ID="newauthor" />
         <asp:ImageButton runat="server" ID="addauthor" Height="17px" ToolTip="Add a new author"  ImageUrl="~/siteimages/Addbuttons/add.png" OnClick="AddAuthor_Click"/>
         <asp:TextBox runat="server" ID="txtAuthor" Text='<%# Bind("Author") %>' />
         <asp:Button ID="btnFindAuthor" runat="server" Text="Author Quick Find" CommandName="Select" OnCommand="btnFindAuthor_Click" />
         <ajaxToolkit:AutoCompleteExtender ID="authors" runat="server" DelimiterCharacters="" Enabled="True" ServicePath="~/WebServices/authorsearchdisplay.asmx" ServiceMethod="AutoComplete" TargetControlID="authors" MinimumPrefixLength="3" />             
    </div>

    <asp:SqlDataSource runat="server" ID="sqlAuthors" ConnectionString="<%$ ConnectionStrings:Libro %>" ProviderName="<%$ ConnectionStrings:Libro.ProviderName %>" 
    SelectCommand="SELECT * FROM Authors" 
    InsertCommand="authors_GetOrCreate" InsertCommandType="StoredProcedure">
        <InsertParameters>
             <asp:ControlParameter ControlID="newAuthor" Name="authorame" />
        </InsertParameters>
    </asp:SqlDataSource>

    <asp:GridView runat="server" ID="gvAuthors" DataSourceID="sqlAuthors" DataKeyNames="AuthorID" AutoGenerateColumns="false">
         <Columns>
            <asp:HyperLinkField HeaderText="Author Name" DataNavigateUrlFormatString="~/authors.aspx?id={0}" DataNavigateUrlFields="AuthorID" DataTextField="AuthorName" />
        </Columns>

     </asp:GridView>
</asp:Panel>

</div>

<div>

</div>
</asp:Content>

假设从字符串转换为int时出错,请尝试:

const int DefaultIndexValue = 1;

int index;
if (!Int32.TryParse(e.CommandArgument.ToString(), out index))
{
    index = DefaultIndexValue;
}
您需要分配给按钮

否则,int index=Convert.ToInt32e.CommandArgument.ToString;将引发异常

比如说-

<asp:Button ID="btnFindAuthor" runat="server" Text="Author Quick Find" 
    CommandName="Select" 
    OnCommand="btnFindAuthor_Click" 
    CommandArgument='<%# Bind("ID") %>' />

错误是…?总是给出你得到的任何错误的详细信息。我的猜测-这确实是一个猜测,因为你没有包括实际的错误-是你得到了一个FormatException。你有没有检查过你的代码并检查了什么是e.CommandArgument.ToString?我肯定会使用调试器…这是我第一次看到@Jonsket answ-普通人-页面中的ered尝试添加错误。点击enter按钮,在我添加错误之前提交了我的问题。这里再次出现错误:{输入字符串的格式不正确。}错误消息是怎么说的?能否添加行System.Diagnostics.Debug.Writee.CommandArgument.ToString;并报告它显示的值?System.FormatException未被用户代码消息处理=输入字符串的格式不正确。Source=mscorlib StackTrace:at System.Number.Strington NumberStyles str,NumberStyles options、NumberBuffer&number、NumberFormatInfo信息、System.number.ParseInt32String s处的布尔parseDecimal、NumberStyles样式、System.Convert.ToInt32String信息、ASP.authors处的NumberFormatInfo信息、aspx.btnFindAuthor\U ClickObject发送者、CommandEventArgs e in authors\default.aspx:System.Web.UI.WebControl处的第18行。Button.OnCommand和CommandCommandEventArgs位于System.Web.UI.WebControl.Button.RaisePostBackEventString事件参数位于System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEventString事件参数位于System.Web.UI.Page.RaisePostBackEventHandler源控件,String事件参数位于System.Web.UI.Page.RaisePostBackEventNameValueCollection postData位于System.Web.UI.Page.ProcessRequestMain Boolean IncludeStages在区域同步点之前,Boolean IncludeStagesSafterAsyncPoint InnerException:我将BindAuthorID分配给了CommandArgument,运行了代码,但仍然得到了相同的错误。为了安全起见,我还完全按照Win建议并运行了代码。仍然出现相同的错误。真的很困惑。根据我阅读的内容,如果我将变量绑定到commandargument,则应传递从AutoCompleteXtender中选择的任何内容。我不明白为什么您首先需要commandargument。不幸的是,我只能向您显示错误是否为;其他然后,我不知道网页应该运行什么。我的建议是设置断点,并逐行调试。Win-我设置断点并逐行调试。错误仍然发生在同一行上。我从findauthors文本框中选择的内容没有通过。我在这里的一个提示中找到了commandargument。你知道吗有没有更有效的方法来传递我的变量?
<asp:Button ID="btnFindAuthor" runat="server" Text="Author Quick Find" 
    CommandName="Select" 
    OnCommand="btnFindAuthor_Click" 
    CommandArgument='<%# Bind("ID") %>' />