如何在ASP.NET MVC中返回API响应消息?
实现API响应消息返回给用户的方案
API响应结构说明
API返回的JSON包含Message和Data两个核心字段,示例如下:
{ "Message": "获取国家列表成功", "Data": [ {"Id": 1, "CountryName": "示例国家1"}, {"Id": 2, "CountryName": "示例国家2"} ] }
1. 更新模型类
在JsonCountryData中添加Message属性,确保能反序列化API返回的消息内容:
namespace EVisaProject.Models { public class CountryModel { public int Id { get; set; } public string CountryName { get; set; } } public class JsonCountryData { public string Message { get; set; } // 新增消息字段 public List<CountryModel> Data { get; set; } } }
2. 修改控制器逻辑
统一处理API请求的成功与失败场景,提取消息并传递到视图:
[HttpGet] public async Task<IActionResult> ListCountries() { var countries = new List<CountryModel>(); string apiMessage = string.Empty; var response = await _client.GetAsync("countries/getall"); string apiResponse = await response.Content.ReadAsStringAsync(); var jsonData = JsonConvert.DeserializeObject<JsonCountryData>(apiResponse); if (response.IsSuccessStatusCode) { countries = jsonData.Data ?? new List<CountryModel>(); apiMessage = jsonData.Message; } else { // 处理请求失败,优先取API返回的错误消息,否则用状态码提示 apiMessage = jsonData.Message ?? $"请求失败,状态码:{response.StatusCode}"; } // 通过ViewBag将消息传递给视图 ViewBag.ApiMessage = apiMessage; return View(countries); }
3. 在视图中展示消息
在对应的Razor视图中添加消息展示代码,可放在列表上方:
@if (!string.IsNullOrEmpty(ViewBag.ApiMessage)) { <div class="alert alert-info"> @ViewBag.ApiMessage </div> } <!-- 原有国家列表渲染代码 --> @foreach (var country in Model) { <div>@country.Id - @country.CountryName</div> }
内容的提问来源于stack exchange,提问作者mustafasamet
相关产品推荐
相关产品推荐

