Asp.net FormParameter不';我不能正常工作

Asp.net FormParameter不';我不能正常工作,asp.net,webforms,Asp.net,Webforms,我编写这段代码是为了从HTML字段获取消息信息,然后执行insert命令。但是InsertCommand没有执行。这里有什么问题 <form action="FormParameter.aspx" method="post"> <label >Title :</label> <input id="txtTitle" type="text" /><br /> <label >Subject:</label> <

我编写这段代码是为了从HTML字段获取消息信息,然后执行insert命令。但是InsertCommand没有执行。这里有什么问题

<form action="FormParameter.aspx" method="post">
<label >Title :</label>
<input id="txtTitle" type="text" /><br />
<label >Subject:</label>
<input id="txtSubject" type="text" /><br />
<label >Category: </label>
<input id="txtCategory" type="text" /><br />

<input id="btnAdd" type="submit" value="Add" />

</form>

    <form id="form1" runat="server">
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MessagesConnectionString %>" 

        InsertCommand="INSERT INTO [Messages] ([Title], [Subject], [CategoryID]) VALUES (@Title, @Subject, @CategoryID)" 
        SelectCommand="SELECT * FROM [Messages]" >

        <InsertParameters>
            <asp:FormParameter Name="Title" FormField="txtTitle" DefaultValue="No Title" />
            <asp:FormParameter  Name="Subject" FormField="txtSubject" DefaultValue="No Subject" />
            <asp:FormParameter Name="CategoryID" FormField="txtCategory" DefaultValue="No Category" />
        </InsertParameters>

    </asp:SqlDataSource>
    </form>
</body>
</html>

您已经添加了一个调用FormParameter.aspx的表单。这不能像那样手动工作

因此,只保留一个表单,并将所有控件放在那里,在那里回发将正常工作

<form id="form1" runat="server">

<label >Title :</label>
<input id="txtTitle" type="text" /><br />
<label >Subject:</label>
<input id="txtSubject" type="text" /><br />
<label >Category: </label>
<input id="txtCategory" type="text" /><br />

<input id="btnAdd" type="submit" value="Add" />

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MessagesConnectionString %>" 

        InsertCommand="INSERT INTO [Messages] ([Title], [Subject], [CategoryID]) VALUES (@Title, @Subject, @CategoryID)" 
        SelectCommand="SELECT * FROM [Messages]" >

        <InsertParameters>
            <asp:FormParameter Name="Title" FormField="txtTitle" DefaultValue="No Title" />
            <asp:FormParameter  Name="Subject" FormField="txtSubject" DefaultValue="No Subject" />
            <asp:FormParameter Name="CategoryID" FormField="txtCategory" DefaultValue="No Category" />
        </InsertParameters>

    </asp:SqlDataSource>
    </form>
有一种方法可以使代码正常工作,方法是禁用此页面的验证,但会使页面容易受到攻击


现在我再次看到您的代码,我不确定InsertParameters是否可以获取非服务器控件的值,我认为您还需要将它们更改为服务器控件。

为什么不使用ASP.NET服务器控件?为什么-1!!你有什么问题?不知道是谁投了反对票,但就个人而言,“新的东西”似乎是一个相当糟糕的理由去做一些更复杂和非标准的事情。除了我将HTML元素更改为ServerControls时,消息信息不会被获取!为什么?@WasimAlatrash因为SqlDataSource就是这样工作的。
<form id="form1" runat="server">

<label >Title :</label>
<input id="txtTitle" type="text" /><br />
<label >Subject:</label>
<input id="txtSubject" type="text" /><br />
<label >Category: </label>
<input id="txtCategory" type="text" /><br />

<input id="btnAdd" type="submit" value="Add" />

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MessagesConnectionString %>" 

        InsertCommand="INSERT INTO [Messages] ([Title], [Subject], [CategoryID]) VALUES (@Title, @Subject, @CategoryID)" 
        SelectCommand="SELECT * FROM [Messages]" >

        <InsertParameters>
            <asp:FormParameter Name="Title" FormField="txtTitle" DefaultValue="No Title" />
            <asp:FormParameter  Name="Subject" FormField="txtSubject" DefaultValue="No Subject" />
            <asp:FormParameter Name="CategoryID" FormField="txtCategory" DefaultValue="No Category" />
        </InsertParameters>

    </asp:SqlDataSource>
    </form>
void Page_Load()
{
    if (IsPostBack)
        SqlDataSource1.Insert();
}