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 找不到具有参数的非泛型方法:

ASP.Net中ListView 不能启用编辑的功能了 为啥?

ASP.NET 是不是有更好的方法来查找其他控件中的控件?

使用 ASP.Net MVC 对网格进行分页和排序