ASP.NET ObjectDataSource 找不到具有参数的非泛型方法
Posted
技术标签:
【中文标题】ASP.NET ObjectDataSource 找不到具有参数的非泛型方法【英文标题】:ASP.NET ObjectDataSource could not find a non-generic method that has parameters 【发布时间】:2013-05-20 01:10:44 【问题描述】:我在 ASP.Net 页面上使用 FormView 控件,该控件带有一个链接到业务层组件的 ObjectDataSource,该业务层组件连接到 SQL Server 中的存储过程。我收到找不到 ObjectDataSource 错误,我已确保我的所有组件都包含参数(并且它们存在)。
我不明白为什么即使参数在那里也找不到?
存储过程:
UPDATE [Anime_List] SET [Name] = @name, [AnimeImage] = @anime_image, [Synopsis] = @synopsis, [Type] = @type, [Episodes] = @episodes, [Genres] = @genres, [Rating] = @rating WHERE (([AnimeID] = @original_animeID));
业务组件:
[DataObjectMethod(DataObjectMethodType.Update)]
public static void UpdateAnimeList(string name, string anime_image, string synopsis,
string type, short episodes, string genres, decimal rating, int original_animeID,
int animeID)
animeList.AnimeListUpdateCommand(name, anime_image, synopsis, type, episodes,
genres, rating, original_animeID, animeID);
数据库设计:
表适配器配置:
ASP.Net:
<asp:ObjectDataSource ID="AnimeDataSource" runat="server" DeleteMethod="DeleteAnimeTitle" InsertMethod="InsertAnimeList" OldValuesParameterFormatString="original_0" SelectMethod="GetAllTitles" TypeName="Business.BAnimeList" UpdateMethod="UpdateAnimeList">
<DeleteParameters>
<asp:Parameter Name="original_animeID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="anime_image" Type="String" />
<asp:Parameter Name="synopsis" Type="String" />
<asp:Parameter Name="type" Type="String" />
<asp:Parameter Name="episodes" Type="Int16" />
<asp:Parameter Name="genres" Type="String" />
<asp:Parameter Name="rating" Type="Decimal" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="anime_image" Type="String" />
<asp:Parameter Name="synopsis" Type="String" />
<asp:Parameter Name="type" Type="String" />
<asp:Parameter Name="episodes" Type="Int16" />
<asp:Parameter Name="genres" Type="String" />
<asp:Parameter Name="rating" Type="Decimal" />
<asp:Parameter Name="original_animeID" Type="Int32" />
<asp:Parameter Name="animeID" Type="Int32" />
</UpdateParameters>
</asp:ObjectDataSource>
感谢您的帮助!
【问题讨论】:
【参考方案1】:寻找另一个 AnimeImage 似乎失败了。
我建议匹配大小写(大写,不要使用 under_case)和错误页面要求的参数顺序。
类似
[DataObjectMethod(DataObjectMethodType.Update)]
public static void UpdateAnimeList(string name, string **animeImage**, string synopsis,
string type, short episodes, string genres, decimal rating, int original_animeID,
int animeID)
...
【讨论】:
啊哈哈。那行得通。不过真的很奇怪,我在存储过程中使用下划线作为参数标识符,但业务方法不喜欢它。谢谢!以上是关于ASP.NET ObjectDataSource 找不到具有参数的非泛型方法的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET2.0 ObjectDataSource的使用详解《转》
是否可以在不使用 ObjectDataSource 的情况下自定义 GridView(在 ASP.NET 中,最好是 3.5)分页?
InvalidOperationException:ObjectDataSource 找不到具有参数的非泛型方法: