C# 使用Ajax将数据填充到GridView,Post方法不起作用。如何解决这个问题?

C# 使用Ajax将数据填充到GridView,Post方法不起作用。如何解决这个问题?,c#,jquery,asp.net,ajax,gridview,C#,Jquery,Asp.net,Ajax,Gridview,我刚刚创建了一个ASP.NETWeb应用程序,其中包含引用“WebAPI”的空模板。在其中,我创建了一个名为“ProductsWebForm.aspx”的Web表单和一个名为“ProductsWebPiemptyController.cs”的控制器。数据未在Gridview中填充,它会发出“未定义”警报。在控制台内,错误消息为: <Error> <Message> No HTTP resource was found that matches the request UR

我刚刚创建了一个ASP.NETWeb应用程序,其中包含引用“WebAPI”的空模板。在其中,我创建了一个名为“ProductsWebForm.aspx”的Web表单和一个名为“ProductsWebPiemptyController.cs”的控制器。数据未在Gridview中填充,它会发出“未定义”警报。在控制台内,错误消息为:

<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:55119/api/ProductsWebAPIEmptyController'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'ProductsWebAPIEmptyController'.
</MessageDetail>
</Error>
我创建了名为“ProductsWebPapiemptyController.cs”的WebAPI 2空控制器:

请帮助我运行此代码:
App\u Start/WebApiConfig2.cs中的将启用通过http的api访问

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}
要与HTTP Post一起使用,请添加属性

namespace GridViewWithAjaxIIIWebApplication.Controllers
{   
    public class ProductsWebAPIEmptyController : ApiController
    {
        [HttpGet, HttpPost ]
        public static string GetCustomers()
        {
            string query = "Select Product_Id, Product_Name, Product_Description, Product_Category, Product_Price, Product_Quantity from Items";


            String cs = ConfigurationManager.ConnectionStrings["WebShopDB"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    SqlCommand cmd = new SqlCommand();
                    sda.SelectCommand = cmd;
                    cmd.Connection = con;
                    cmd.CommandText = query;
                    using (DataSet ds = new DataSet())
                    {
                        sda.Fill(ds);
                        return ds.GetXml();
                    }
                }
            }
        }
    }
}
并在URL中使用操作名称

<script type="text/javascript">
     $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "/api/ProductsWebAPIEmptyController/GetCustomers",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function(response)
            {
                alert(response.d);

            },
            error: function(response)
        {
                alert(response.d);
        }
        });
    });

$(文档).ready(函数(){
$.ajax({
类型:“POST”,
url:“/api/ProductsWebPapiemptyController/GetCustomers”,
数据:“{}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:一旦成功,
故障:功能(响应)
{
警报(response.d);
},
错误:函数(响应)
{
警报(response.d);
}
});
});

阅读此、此以及最后一个,将有助于您理解asp.net、asp.net MVC和asp.net Web API。因此,现在您知道了IsPostBack的用法,并将更新或删除您的问题。我阅读了此内容。我明白了。因为它为开发人员提供了高度的控制,并支持测试驱动的开发。阅读此博客后:。我有个问题。我在上面的Web应用程序中制作了一个控制器,还包括了Web API。我们只能在MVC甚至Web表单应用程序中制作控制器和应用RESTAPI?请帮助我理解这取决于物理体系结构,如果api和表单在同一台服务器上,那么您可以使用api作为DLL引用,不需要作为http请求调用。如果它位于diff服务器上,则您不能使用dll,然后将其作为http请求调用,并使用适当的动词,如GET/POST.IsPostBack,用于通过POST请求将数据发送到服务器。在这里,页面加载实现(!IsPostBack),以便在页面加载时首次将数据绑定到GridView。我必须使用ViewState来保留数据,还是什么?我不认为这是错误的原因。ajax URL中有错误吗?在文件'WebApiConfig.cs'中,我有公共静态无效寄存器(HttpConfiguration config){config.Routes.maphttroute(名称:“DefaultApi”,routeTemplate:“api/{controller}/{id}”,默认值:new{id=RouteParameter.Optional});}在Global.asax.cs中我有:受保护的无效应用程序_Start(){GlobalConfiguration.Configure(WebApiConfig.Register);}我使用CDN加载jquery文件。I[HttpGet,HttpPost]和url:“/api/productswebapemptycontroller/GetCustomers”不起作用,我甚至试过这个
namespace GridViewWithAjaxIIIWebApplication.Controllers
{   
    public class ProductsWebAPIEmptyController : ApiController
    {
        [WebMethod]
        public static string GetCustomers()
        {
            string query = "Select Product_Id, Product_Name, Product_Description, Product_Category, Product_Price, Product_Quantity from Items";


            String cs = ConfigurationManager.ConnectionStrings["WebShopDB"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    SqlCommand cmd = new SqlCommand();
                    sda.SelectCommand = cmd;
                    cmd.Connection = con;
                    cmd.CommandText = query;
                    using (DataSet ds = new DataSet())
                    {
                        sda.Fill(ds);
                        return ds.GetXml();
                    }
                }
            }
        }
    }
}
public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}
namespace GridViewWithAjaxIIIWebApplication.Controllers
{   
    public class ProductsWebAPIEmptyController : ApiController
    {
        [HttpGet, HttpPost ]
        public static string GetCustomers()
        {
            string query = "Select Product_Id, Product_Name, Product_Description, Product_Category, Product_Price, Product_Quantity from Items";


            String cs = ConfigurationManager.ConnectionStrings["WebShopDB"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    SqlCommand cmd = new SqlCommand();
                    sda.SelectCommand = cmd;
                    cmd.Connection = con;
                    cmd.CommandText = query;
                    using (DataSet ds = new DataSet())
                    {
                        sda.Fill(ds);
                        return ds.GetXml();
                    }
                }
            }
        }
    }
}
<script type="text/javascript">
     $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "/api/ProductsWebAPIEmptyController/GetCustomers",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function(response)
            {
                alert(response.d);

            },
            error: function(response)
        {
                alert(response.d);
        }
        });
    });