无法在ObjectDataSource中使用ControlParameters [英] Cannot use ControlParameters in ObjectDataSource
问题描述
我正在尝试使用ASP.NET Web窗体中的ListView和ObjectDataSource创建一个简单的CRUD。我无法在ObjectDataSource中使用ControlParameters来插入数据。
以下是我在aspx文件中定义ObjectDataSource的方法。
< asp:ObjectDataSource ID = < span class =code-keyword> ObjectDataSource1
< span class =code-attribute> runat = server
< span class =code-attribute> TypeName = BookModel
InsertMethod = AddBook
< span class =code-attribute> UpdateMethod = EditBook
DeleteMethod = DeleteBook
SelectMethod = GetAllBooks >
< InsertParameters >
< asp:ControlParameter 名称 = BookName ControlID = form1 $ BookName PropertyName = 文本 类型 = 字符串 / >
< asp:ControlParameter 名称 = AuthorID ControlID = form1 $ AuthorID PropertyName = Text 类型 = < span class =code-keyword> Int32 / >
< asp:ControlParameter 名称 = SubjectID ControlID = form1 $ SubjectID PropertyName = 文字 类型 = Int32 / > ;
< asp:ControlParameter 名称 = 复制 ControlID = form1 $ Copies PropertyName = 文字 输入 = Int32 / >
< / InsertParameters >
< / asp:ObjectDataSource >
这是我的ListView。
< asp:ListView ID = ListView1
runat = server
DataSourceID = ObjectDataSource1
InsertItemPosition = LastItem
DataKeyNames = BookID
>
< ItemTemplate >
<% #Eval( BookID)%> ,
<% #Eval(< span class =code-string> BookName)%> ,
<% #Eval( AuthorID)%> ,
< ;% #Eval( SubjectID)%> ,
<% #Eval( 复制)%> & nbsp;& nbsp;& nbsp;
< asp:按钮 ID = Button1 CommandName = 删除 文字 = 删除 runat < span class =code-keyword> = server / >
< asp:按钮 ID = Button2 CommandName = 编辑 文字 = 编辑 runat = server / >
< br / >
< / ItemTemplate > ;
< InsertItemTemplate >
< br / >
图书名称:< asp:TextBox ID = BookName runat = server 文本 =' <% #Bind( BookName)%> ' > < / asp:TextBox > < br < span class =code-attribute> / >
主题: < asp:TextBox ID = SubjectID runat = 服务器 文字 =' <% #Bind( SubjectID)%> ' > < / asp:TextBox > < br / >
作者:< asp:TextBox ID = AuthorID < span class =code-attribute> runat = server 文本 =' <% #Bind( AuthorID)%> ' > < / asp:TextBox > < br / >
副本:< asp:TextBox ID = 复制 runat = server 文本 =' <% #Bind( Copies)%> ' > < / asp:TextBox > < br / >
< asp:按钮 < span class =code-attribute> ID = SubmitButton runat = 服务器 正文 = 添加 CommandName = 插入 / >
< / InsertItemTemplate >
< / asp:ListView >
这是我的插入方法代码
<前郎=cs> public static void AddBook( int SubjectID, int AuthorID, int 副本,字符串 BookName)
{
Book b1 = new Book {BookName = BookName,AuthorID = AuthorID,SubjectID = SubjectID,Copies = Copies};
db.Books.Add(b1);
db.SaveChanges();
}
每当我运行我的申请时尝试插入新记录,我收到此错误
无法在ControlParameter'BookName'中找到控件'form1 $ BookName'。
我的ListView和ObjectDataSource包含在相同的表单中,该表单具有id form1。
BookName PropertyName = 文字 类型 = 字符串 / < span class =code-keyword>>
< asp:ControlParameter名称 = AuthorID ControlID = form1
AuthorID PropertyName = 文字 类型 = Int32 / >
< asp:ControlParameter 名称 = SubjectID ControlID = form1
SubjectID PropertyName = 文字 类型 = Int32 / >
< asp:ControlParameter 名称 = 复制 ControlID = form1
I am trying to make a simple CRUD using a ListView and a ObjectDataSource in ASP.NET Web Forms. I cannot use ControlParameters in my ObjectDataSource to insert data.
Here is how my ObjectDataSource is defined in the aspx file.
<asp:ObjectDataSource ID="ObjectDataSource1"
runat="server"
TypeName="BookModel"
InsertMethod="AddBook"
UpdateMethod="EditBook"
DeleteMethod="DeleteBook"
SelectMethod="GetAllBooks">
<InsertParameters>
<asp:ControlParameter Name="BookName" ControlID="form1$BookName" PropertyName="Text" Type="String" />
<asp:ControlParameter Name="AuthorID" ControlID="form1$AuthorID" PropertyName="Text" Type="Int32" />
<asp:ControlParameter Name="SubjectID" ControlID="form1$SubjectID" PropertyName="Text" Type="Int32" />
<asp:ControlParameter Name="Copies" ControlID="form1$Copies" PropertyName="Text" Type="Int32" />
</InsertParameters>
</asp:ObjectDataSource>
Here is my ListView.
<asp:ListView ID="ListView1"
runat="server"
DataSourceID="ObjectDataSource1"
InsertItemPosition="LastItem"
DataKeyNames="BookID"
>
<ItemTemplate>
<%# Eval("BookID") %>,
<%# Eval("BookName") %>,
<%# Eval("AuthorID") %>,
<%# Eval("SubjectID") %>,
<%# Eval("Copies") %>
<asp:Button ID="Button1" CommandName="Delete" Text="Delete" runat="server" />
<asp:Button ID="Button2" CommandName="Edit" Text="Edit" runat="server" />
<br />
</ItemTemplate>
<InsertItemTemplate>
<br />
Book name: <asp:TextBox ID="BookName" runat="server" Text='<%# Bind("BookName") %>'></asp:TextBox><br />
Subject: <asp:TextBox ID="SubjectID" runat="server" Text='<%# Bind("SubjectID") %>'></asp:TextBox><br />
Author: <asp:TextBox ID="AuthorID" runat="server" Text='<%# Bind("AuthorID") %>'></asp:TextBox><br />
Copies: <asp:TextBox ID="Copies" runat="server" Text='<%# Bind("Copies") %>'></asp:TextBox><br />
<asp:Button ID="SubmitButton" runat="server" Text="Add" CommandName="Insert" />
</InsertItemTemplate>
</asp:ListView>
Here is my Insert method code
public static void AddBook(int SubjectID, int AuthorID, int Copies, string BookName)
{
Book b1 = new Book { BookName = BookName, AuthorID = AuthorID, SubjectID = SubjectID, Copies = Copies };
db.Books.Add(b1);
db.SaveChanges();
}
Whenever I run my application and try to insert a new record, I get this error
Could not find control 'form1$BookName' in ControlParameter 'BookName'.
My ListView and ObjectDataSource are enclosed in the same form and that form has id form1.
BookName" PropertyName="Text" Type="String" /> <asp:ControlParameter Name="AuthorID" ControlID="form1
AuthorID" PropertyName="Text" Type="Int32" /> <asp:ControlParameter Name="SubjectID" ControlID="form1
SubjectID" PropertyName="Text" Type="Int32" /> <asp:ControlParameter Name="Copies" ControlID="form1
这篇关于无法在ObjectDataSource中使用ControlParameters的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!