Подключение основного веб-API asp.net к проекту asp.net-mvc5 - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь подключить веб-интерфейс ядра asp.net (он уже подключен к моему локальному серверу sqlserver и работает нормально) с моим веб-приложением asp.net-mvc5, поэтому при вызове контроллера он получает данные из базы данных с помощью API

Теперь вот как я пытаюсь подключить API в моем проекте asp.net mvc, показанном ниже: 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);
        }

    }

Я ожидаю, что он вернет мне учителей в виде объектов jsonно это ошибка, которую я получаю: элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List 1[AptitudeTest.Teacher]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [AptitudeTest.Models.Teacher]'.

Описание: необработанное исключениепроизошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List 1[AptitudeTest.Teacher]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [AptitudeTest.Models.Teacher]'.

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение.Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы получаете ошибку:

Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List1 [AptitudeTest.Teacher]' ,но для этого словаря требуется элемент модели типа 'System.Collections.Generic.IEnumerable1 [AptitudeTest.Models.Teacher]' .

, что означает, что ваше представление ожидает другой объект модели какввод, в то время как переданный объект имеет другой тип.Похоже, что вы имеете ввиду определенную модель как:

IEnumerable<Teacher>

, в то время как вы возвращаете List<Teacher>.Либо измените представление на List<Teacher> как:

@model List<Teacher>

или верните объект IEnumerable<Teacher> из действия контроллера.

, для этого вы можете написать следующее:

IEnumerable<Teacher> teachers = teacher;
return View(teachers );

В любом случае вы должны быть в состоянии устранить ошибку и продолжать двигаться.

РЕДАКТИРОВАТЬ:

не заметил, что в разных пространствах имен есть два разных класса, один из них AptitudeTest.Teacher и прочие AptitudeTest.Models.Teacher.класс, который мы определили для представления, должен быть таким же, который передается из метода действия.Прямо сейчас есть два класса каждый в различном пространстве имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...