Sql server 将asp.net核心web api连接到asp.net-mvc5项目

Sql server 将asp.net核心web api连接到asp.net-mvc5项目,sql-server,asp.net-mvc,asp.net-core-webapi,Sql Server,Asp.net Mvc,Asp.net Core Webapi,我正在尝试将asp.net核心web api(已连接到本地sqlserver,工作正常)连接到我的asp.net-mvc5 web应用程序,因此当调用控制器时,它将使用api从数据库获取数据 现在,我正试图在我的asp.net mvc项目中连接api,如下所示为homeController: namespace AptitudeTest.Controllers { public class HomeController : Controller { string Baseurl =

我正在尝试将asp.net核心web api(已连接到本地sqlserver,工作正常)连接到我的asp.net-mvc5 web应用程序,因此当调用控制器时,它将使用api从数据库获取数据

现在,我正试图在我的asp.net mvc项目中连接api,如下所示为homeController:

namespace AptitudeTest.Controllers
{

public class HomeController : Controller
{

    string Baseurl = "http://localhost:51448";
    public async Task<ActionResult> Index()
    {
        List<Teacher> teacher = new List<Teacher>();
        //Teacher t1 = new Teacher();
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(Baseurl);
            client.DefaultRequestHeaders.Clear();

            //Define request data format  
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //Sending request to find web api REST service resource GetAllEmployees using HttpClient  
            HttpResponseMessage Res = await client.GetAsync("api/Admin/Get");

            //Checking the response is successful or not which is sent using HttpClient  
            if (Res.IsSuccessStatusCode)
            {
                //Storing the response details recieved from web api   
                var EmpResponse = Res.Content.ReadAsStringAsync().Result;

                //Deserializing the response recieved from web api and storing into the Employee list  
                teacher = JsonConvert.DeserializeObject<List<Teacher>>(EmpResponse);

            }
            //returning the employee list to view  

            return View(teacher);
        }

    }
namespace-AptitudeTest.Controllers
{
公共类HomeController:控制器
{
字符串Baseurl=”http://localhost:51448";
公共异步任务索引()
{
列表教师=新列表();
//教师t1=新教师();
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
//定义请求数据格式
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
//使用HttpClient发送查找web api REST服务资源GetAllEmployees的请求
httpresponsemessageres=await client.GetAsync(“api/Admin/Get”);
//检查使用HttpClient发送的响应是否成功
如果(Res.IsSuccessStatusCode)
{
//存储从web api接收的响应详细信息
var EmpResponse=Res.Content.ReadAsStringAsync().Result;
//反序列化从web api接收的响应并存储到员工列表中
teacher=JsonConvert.DeserializeObject(EmpResponse);
}
//返回要查看的员工列表
返回视图(教师);
}
}
我希望它将教师作为json对象返回给我,但这是我得到的错误: 传递到字典的模型项的类型为“System.Collections.Generic.List
1[AptiudeTest.Teacher]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[AptiudeTest.Models.Teacher]”的模型项

描述:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪,以了解有关错误及其在代码中起源的详细信息

异常详细信息:System.InvalidOperationException:传入词典的模型项的类型为“System.Collections.Generic.List
1[AptiudeTest.Teacher]”,但此词典需要类型为“System.Collections.Generic.IEnumerable
1[AptiudeTest.Models.Teacher]”的模型项

源错误:


在执行当前web请求期间生成了一个未经处理的异常。有关异常来源和位置的信息可以使用下面的异常堆栈跟踪来识别。

您得到的错误是:

传入词典的模型项的类型为'System.Collections.Generic.List1[AptitudeTest.Teacher],但此词典需要类型为'System.Collections.Generic.IEnumerable1[AptitudeTest.Models.Teacher]的模型项

这意味着您的视图需要不同的模型对象作为输入,而传递的对象是不同类型的。看起来您在视图中将模型定义为:

IEnumerable<Teacher>
IEnumerable
当您返回一个
列表时
。或者在视图中将其更改为
列表
,如:

@model List<Teacher>
@型号列表
或者从控制器操作返回一个
IEnumerable
对象

为此,您可以编写以下内容:

IEnumerable<Teacher> teachers = teacher;
return View(teachers );
IEnumerable teachers=教师;
返回视图(教师);
无论哪种方式,您都应该能够解决错误并继续前进

编辑:
我没有注意到在不同的命名空间中有两个不同的类,一个是
AptiudeTest.Teacher
,另一个是
AptiudeTest.Models.Teacher
。我们定义的视图中的类应该是从action方法传递过来的相同类。现在有两个类分别位于不同的命名空间中。

我已经尝试了后来出现了一个相同的错误,难道没有像react中的axios这样的库可以帮助我将api连接到react项目(我也在reactjs中处理相同的项目)吗@ShabanaHussain抱歉,我的不好,看起来你也有另一个问题,即有两个不同的类,一个是:
ApitudeTest.Models.Teacher
,第二个是:
ApitudeTest.Teacher
,两者在视图中应该是相同的,在视图中是从action传递的,您可以将模型设置为从action传递的前一个:
@model List
或pass
List
来自action Method谢谢,问题都是关于模型的,现在我已经修复了它,我有另一个不同的错误:“无法从system.int64强制转换或转换到system.collections.generic.List”引用代码行“teacher=JsonConvert.DeserializeObject(EmpResponse);”现在idk在调试程序中检查json响应并将其与您的模型进行比较,很可能是从json到c#object的转换失败了