Skip to main content
 首页 » 编程设计

c#之从 Webforms 应用程序与 Web API 对话

2024年05月29日48Free-Thinker

我有一个 asp.net webforms 应用程序作为我的 UI 层。此应用程序负责将对象列表向下发送到我的 DAL 类库,然后 DAL 类库会将此对象列表发送到 WebAPI 进行处理。

WebAPI 需要检索对象列表,进行处理并发回 OK 状态码。

这可能吗?是否有关于如何完成此操作的任何好的文档?

这是我的网络表单应用程序中的内容:

public static async Task<bool> MyFunction(IList<string> Ids) 
{ 
    using (var client = new HttpClient()) 
    { 
        bool success = false; 
 
        client.BaseAddress = new Uri("http://localhost:9000/"); 
        client.DefaultRequestHeaders.Accept.Clear(); 
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
 
        // HTTP GET 
        HttpResponseMessage response = await client.GetAsync("api/products/MyProcessFunctionName"); 
        if (response.IsSuccessStatusCode) 
        { 
            success = true; 
        } 
 
        return success; 
    } 
} 

我需要弄清楚如何将字符串 ID 列表作为参数发送到 WebApi 处理函数。

请您参考如下方法:

我假设您已经知道如何在您的项目中设置 Web API Controller 。

这是一个代码示例,用于将数据从 UI 发送回 Web API Controller 方法,然后将数据保存在数据库中,

第 1 步:

在你的前端,我希望你有一个自定义的 javascript 文件来处理任何按钮点击事件。然后,尝试使用 POST 方法将数据从 UI 发送到 Web API,如下所示,

            var StaffSaveRequest = {}; 
            StaffSaveRequest.StaffDetails = {}; 
            StaffSaveRequest.StaffDetails.Name = "Test Name"; 
 
            $.ajax({ 
                url: 'api/Staff/SaveStaff', //this is the path to web api controller method 
                type: 'POST',                    
                dataType: 'json', 
                data: StaffSaveRequest, 
                success: function (response, textStatus, xhr) { 
                    //handle success  
                }, 
                error: function (xhr, textStatus, errorThrown) {                         
                    if (textStatus != 'abort') { 
                      //handle error 
                    } 
                } 
            }); 

第 2 步:

如下所示添加 Controller 类并查看内联注释。然后,该 Controller 类将与数据访问层中的方法交互以保存任何信息。

    public class StaffController : ApiController //inherits ApiController  
    { 
        [HttpPost] //add post attribute 
        public HttpResponseMessage SaveStaff(StaffSaveRequest staffSaveRequest) 
        { 
            try 
            {             
                var result = StaffManager.Save(staffSaveRequest);//save in database using a method in data access layer 
                return Request.CreateResponse(HttpStatusCode.OK, result);//result the response back 
            } 
            catch (Exception ex) 
            { 
               //log error 
            } 
        } 

我希望这能让您对从哪里开始以及如何开始有所了解。如果您仍有问题,请回复。