【问题标题】:ASP.NET ObjectDataSource could not find a non-generic method that has parametersASP.NET ObjectDataSource 找不到具有参数的非泛型方法
【发布时间】: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>

感谢您的帮助!

【问题讨论】:

    标签: c# asp.net sql vb.net 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) {
        ...
    }
    

    【讨论】:

    • 啊哈哈。那行得通。不过真的很奇怪,我在存储过程中使用下划线作为参数标识符,但业务方法不喜欢它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多