从C# MVC控制器返回列表项

16 浏览
0 Comments

从C# MVC控制器返回列表项

我编写了这段代码,它应该返回一个项目列表,但无法正常工作。我知道HttpResponseMessageList之间存在不匹配,但我无法将其转换为返回类型。

image

我知道这是由于HttpResponseMessage类型和列表不匹配,但我不知道如何进行转换。

namespace NovaWebApi.Controllers
{
    public class TermsController : WebApiBase
    {
        [HttpGet]
        public HttpResponseMessage GetTermsUrl()
        {
            List terms = new List();
            terms.Add("https://www.nbg.gov.ge/index.php?m=2");
            terms.Add("https://www.fms.gov.ge/");
            return terms;
        }
    }
}

0
0 Comments

问题的原因是希望从C# MVC Controller返回一个列表项,但是返回类型需要是HttpResponseMessage。解决方法是创建一个包含列表的HttpResponseMessage对象,并将其作为响应返回。

在这种情况下,Web API将使用一个模型格式化器在响应体中创建一个序列化版本的列表。以下是示例代码:

[HttpGet]
public HttpResponseMessage GetTermsUrl()
{
     // 从数据库中获取产品列表
     List terms = 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对象。

0
0 Comments

问题的原因是尝试将List作为HttpResponseMessage返回,这是不可能的。解决方法是使用Ok()方法来返回List

解决方法如下:

首先,在Controller类中继承Controller:

public class TermsController : Controller

然后,在返回值中使用Ok()方法:

return Ok(terms);

但是,有人尝试了这个方法后出现了错误:"name Ok doesn't exist in the current contexts"。为了解决这个问题,有人建议生成一个新的Ok()方法,但是这并没有起到帮助作用。

最后,有人指出应该使用Controller类来继承,而不是WebApiBase类。

问题的原因是尝试将List作为HttpResponseMessage返回,解决方法是使用Ok()方法返回List,但是在实际尝试时出现了错误。

0
0 Comments

问题的原因是:用户试图从C# MVC控制器中返回一个列表项,但是他没有明确指定返回类型,导致方法无法正确返回列表项。

解决方法是:用户需要在方法签名中指定返回类型为List,这样才能正确返回列表项。以下是修改后的代码:

[HttpGet]
public List GetTermsUrl()
{
    List terms = new List();
    terms.Add("https://www.nbg.gov.ge/index.php?m=2");
    terms.Add("https://www.fms.gov.ge/");
    return terms;
}

这样修改后的代码可以正确返回列表项。

0