Вы добавили форму, которая вызывает 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>
, а код позадилучше использовать
void Page_Load()
{
if (IsPostBack)
SqlDataSource1.Insert();
}
Есть способ заставить ваш код работать, отключив проверку для этой страницы, но тогда вы делаете свою страницу уязвимой для атак.
Теперь я вижу сноваВаш код, и я не уверен, что InsertParametres может получить значения не серверных элементов управления, я думаю, что вам также нужно изменить их на ServerControls.