从C# MVC控制器返回列表项
从C# MVC控制器返回列表项
我编写了这段代码,它应该返回一个项目列表,但无法正常工作。我知道HttpResponseMessage
和List
之间存在不匹配,但我无法将其转换为返回类型。
我知道这是由于HttpResponseMessage
类型和列表不匹配,但我不知道如何进行转换。
namespace NovaWebApi.Controllers { public class TermsController : WebApiBase { [HttpGet] public HttpResponseMessage GetTermsUrl() { Listterms = new List (); terms.Add("https://www.nbg.gov.ge/index.php?m=2"); terms.Add("https://www.fms.gov.ge/"); return terms; } } }
问题的原因是希望从C# MVC Controller返回一个列表项,但是返回类型需要是HttpResponseMessage。解决方法是创建一个包含列表的HttpResponseMessage对象,并将其作为响应返回。
在这种情况下,Web API将使用一个模型格式化器在响应体中创建一个序列化版本的列表。以下是示例代码:
[HttpGet] public HttpResponseMessage GetTermsUrl() { // 从数据库中获取产品列表 Listterms = new List (); terms.Add("https://www.nbg.gov.ge/index.php?m=2"); terms.Add("https://www.fms.gov.ge/"); // 将列表写入响应体 HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, terms); return response; }
以上代码将返回一个包含列表项的HttpResponseMessage对象。
问题的原因是尝试将List
解决方法如下:
首先,在Controller类中继承Controller:
public class TermsController : Controller
然后,在返回值中使用Ok()方法:
return Ok(terms);
但是,有人尝试了这个方法后出现了错误:"name Ok doesn't exist in the current contexts"。为了解决这个问题,有人建议生成一个新的Ok()方法,但是这并没有起到帮助作用。
最后,有人指出应该使用Controller类来继承,而不是WebApiBase类。
问题的原因是尝试将List