如何在 mvc 中使用 WebApi 服务



在这里,我试图Mvc访问WebApi服务,但我出现错误:

严重性代码描述项目文件行错误 CS0029 无法 将类型"字符串"隐式转换为 'System.Collections.Generic.IEnumerable'

IEnumerable<MasterTab> resResult = result.Content.ReadAsStringAsync().Result;
public ActionResult Index()
{
using(var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:54040/Api/Marketing/");
var responseTask = client.GetAsync("GetMarketing");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
IEnumerable<MasterTab> resResult = result.Content.ReadAsStringAsync().Result;
}
else
{
students = Enumerable.Empty<MasterTab>();ModelState.AddModelError(string.Empty, "Server Error Please Conatct Admin");
}
}
return View(students);
}

无论哪种方式,我们都可以直接从您的MVC控制器调用ApiController

public class HomeController : Controller
{
public ActionResult Index()
{
var listOfFiles = new MarketingController().GetMarketing();
return View(listOfFiles);
}
}

如果我们在同一解决方案中将WebApi作为完全不同的项目,那么我们可以从控制器调用相同的MVC如下所示:

public async Task<ActionResult> Index()
{
string apiUrl = "http://localhost:58764/api/Marketing/GetMarketing";
using (HttpClient client=new HttpClient())
{
client.BaseAddress = new Uri(apiUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
EntityType entity = Newtonsoft.Json.JsonConvert.DeserializeObject<EntityType>(data);
}

}
return View();
}

不能将类型字符串转换为 MasterTab 类型。我猜 WebApi 服务以 JSON 格式返回数据。尝试使用 Newtonsoft.Json 将字符串响应反序列化为 MasterTab 集合。

https://www.newtonsoft.com/json

最新更新