2017-02-16 40 views
0

Кажется, что этот вопрос задан и много задан на этом сайте, но я все еще не могу решить проблему. Я получаю элемент модели, переданный в словарь, имеет тип «X», но для этого словаря требуется элемент модели типа «Y», хотя я уверен, что мой код указывает на нужное место и получает правильный viewModel.Почему мой взгляд всегда ожидает 1 конкретную модель просмотра?

View (Index)

@model EveryNationRandburg.ViewModels.AllUsers 

@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Church Members</h2> 

<p>@Html.ActionLink("New Member", "Register", "Account", null, new { @class = "btn btn-primary" })</p> 

<table class="table table-bordered table-hover" id="kerkmembers"> 
    <thead> 
    <tr> 
     <th>Member</th> 
     <th>Email</th> 
     <th>Contact Number</th> 
    </tr> 
    </thead> 
    <tbody> 
    @foreach (var member in Model.AlleKerkMembers) 
    { 
     <tr> 
      <td>@Html.ActionLink(@member.UserName, "Edit", "KerkMember", new {id = @member.Id}, null)</td> 
      <td>@member.Email</td> 
      <td>@member.PhoneNumber</td> 
     </tr> 
    } 
    </tbody> 
</table> 


@section scripts 
{ 
    <script> 
     $(document).ready(function(){ 
      $("#kerkmembers").DataTable(); 
     }) 
    </script> 
} 

ViewModel

public class AllUsers 
{ 
    public List<ApplicationUser> AlleKerkMembers = new List<ApplicationUser>(); 
} 

Контроллер счета

public ActionResult Index() 
{ 
    var viewModel = new AllUsers 
    { 
     AlleKerkMembers = _context.Users.ToList() 
    }; 
    return View(viewModel); 
} 

StackTrace

InvalidOperationException: Модель элемент передается в словарь типа «EveryNationRandburg.ViewModels.AllUsers», но этот словарь требует модель элемента типа «EveryNationRandburg.ViewModels.KonnekGroepViewModel».

Что немного отличается для моей проблемы заключается в том, что всякий раз, когда я пытаюсь отправить ViewModel к виду, я всегда получаю ошибку о том, что не ожидает, что элемент типа «Y» (всегда же один, независимо от того, что модель, которую я заявляю в верхней части моего представления)

+0

В какой строке указывается сообщение об ошибке? Это ** return View (viewModel); ** Вы можете добавить все сообщение об ошибке к описанию проблемы. – KettuJKL

+1

попробуйте очистить решение, перезапустить визуальную студию –

+0

Ошибка очевидна - ваша проходящая модель, которая является «AllUsers», для представления, которое ожидает «KonnekGroepViewModel», но вы не указали соответствующий код (представление, которое имеет «KonnekGroepViewModel» или как вы это называете). Лучше всего предположить, что вы используете '@ Html.Partial()' в главном представлении. –

ответ

0

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

Где вы используете результат для return View(viewModel);?

У вас нет объявления для конструктора вашего представления.

Каков тип объекта, который ожидает ваш взгляд? Должно быть AllUsers, так как вы проходите AllUsers объект к нему.

Вы можете попробовать использовать явные типы вместо var, чтобы убедиться, что вы передаете правильный тип объекта. Коду было бы легче читать.

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

+1

Привет @KettuJKL Когда я отлаживаю, я могу просмотреть весь вид без каких-либо ошибок. Я действительно могу увидеть объекты, которые я передаю в представление через viewmodel (AllUsers) из контроллера. Я представляю таблицу в этом представлении и показываю некоторые данные от всех пользователей в моем db. После того, как код выходит из представления, он вводит метод Dispose() контроллера. Проходит без ошибок, а затем внезапно падает. Я очистил, перестроил и перезапустил VS. Не знаю, почему это вызвано. –

+0

Не могли бы вы добавить дополнительное описание к вашему вопросу и журналу отладки? Я имею в виду, что это происходит в методе Dispose и журнале сбоев. Кто-то может сразу увидеть, что происходит. – KettuJKL

+1

Ohke, добавил трассировку стека ошибки –