从ASP.Net中的业务逻辑层调用WebMethods

时间:2014-08-06 07:38:49

标签: c# jquery asp.net ajax

我正在使用C#在ASP.Net中开发一个应用程序。我的应用程序构建在三层架构中。因此存在业务逻辑层。我在名为Landing_Menus.cs的类中编写了Web方法(名为getBusinessVerticals),该类位于业务逻辑层(在App_Code文件夹下)。我必须进行AJAX调用才能获得函数的结果。我的功能代码如下(Landing_Menus.cs)

    public static class Landing_Menus
{
    static string sql_query = string.Empty;
    static DataSet result_ds = new DataSet();

    [WebMethod]
    public static Struct_Business_Verticals[] getBusinessVerticals()
    {
        List<Struct_Business_Verticals> list_bv = new List<Struct_Business_Verticals>();
        sql_query = "select * from Business_Verticals";
        result_ds = DBAccess.selectQuery(sql_query);

        for (int i = 0; i < result_ds.Tables[0].Rows.Count; i++)
        {
            Struct_Business_Verticals objBusniessVerticals = new Struct_Business_Verticals();
            objBusniessVerticals.Business_Verticals_ID = Convert.ToInt32(result_ds.Tables[0].Rows[i]["Business_Verticals_ID"].ToString());
            objBusniessVerticals.Business_Vertical_Type = result_ds.Tables[0].Rows[i]["Business_Vertical_Type"].ToString();
            objBusniessVerticals.Business_Vertical_Description = result_ds.Tables[0].Rows[i]["Business_Vertical_Description"].ToString();
            objBusniessVerticals.status = result_ds.Tables[0].Rows[i]["Status"].ToString();
            list_bv.Add(objBusniessVerticals);
        }

        return list_bv.ToArray();
    }
}

我的AJAX呼叫代码如下

    $(document).ready(function () {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "App_Code/Landing_Menus.cs/getBusinessVerticals",
        data: "",
        dataType: "JSON",
        async: true,
        cache: false,
        success: function (data) {
            alert(JSON.stringify(data));
            //for (var i = 0; i < data.d.length; i++) {

            //}
        },
        error: function (result,d,s) {
            alert(s);
        }
    });
});

但是它给了我一个像&#34; NetworkError:403 Forbidden - http://www.example.com/web2print/App_Code/Landing_Menus.cs/getBusinessVerticals&#34;的错误。请帮我从这里出去。我想我在AJAX URL中犯了一些错误。请相应地指导我。

3 个答案:

答案 0 :(得分:0)

您只能在作为WebService公开的类上调用webmethods。因此,您无法通过Ajax直接调用BusinessLayer中的WebMethod。

您基本上有2个选项可以访问您的方法。

  • 创建一个调用业务逻辑方法的Web服务,并从客户端调用该Web服务
  • 在项目中创建一个PageMethod作为现有.aspx-Page的一部分。并从您的客户那里打电话。 PageMethod基本上是带有WebMethod-Attribute的aspx-Page中的公共静态方法。

希望有所帮助。

答案 1 :(得分:0)

Web方法应该在Page.aspx.cs类中。然后你需要打电话的网址是:

Page.aspx/YourWebMethod

就像这里一样:

http://aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

您的网址不正确,您的网络方法属于静态类,不会从Page类继承 - 它无法正常工作。如果要调用业务层,可以在Web方法中执行此操作。

答案 2 :(得分:-1)

我的想法是在aspx页面中创建一个方法。在该方法中调用您的业务层

调用jquery方法

url:&#34; * .aspx / Newmethod&#34;,