Передача списка с контроллера на просмотр приводит к отсутствию какой-либо модели / пространства имен в представлении

#asp.net-mvc #razor

#asp.net-mvc #razor

Вопрос:

Это мой код: контроллер —

 DatabaseContext db = new DatabaseContext();
List<users> UsersToView = new List<users>();
UsersToView = db.users.ToList();

return View(UsersToView);
  

Вид —

Я написал это: @model List<UsersToView> но это выдает ошибку:

Ошибка состояния подавления строки файла проекта описания кода серьезности CS0246 Не удалось найти тип или имя пространства имен ‘UsersToView’ (вам не хватает директивы using или ссылки на сборку?)

И я не уверен, что я здесь делаю не так.

Комментарии:

1. @Div Я пробовал это @model List<projectname.Models.users> , но не могу перейти к дополнительному. UsersToView

2. @Div Это только в контроллере

3. @Div это хороший способ? Я где-то читал, что это не пуленепробиваемый или что-то в этом роде @_ @

4. Нет, это не так. создайте модель UsersToView и привяжите ее к контроллеру и добавьте ее в представление, чтобы использовать ее лучшие практики

5. Или вы можете передать непосредственно return return View(db.users.ToList()); и на странице просмотра @model List<User>

Ответ №1:

Здесь вы можете передать список users таким образом:

Контроллер:

 DatabaseContext db = new DatabaseContext();

return View(db.users.ToList());
  

И просмотр:

 @model IEnumerable<users>
  

Ответ №2:

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

Я написал это: @model List<UsersToView> но это выдает ошибку

Причина, по которой вы получаете ошибку в этой строке кода, заключается в том, что при написании @model компилятор ожидает, что следующим будет тип данных. Таким образом, вы специально указываете, какой тип данных должен быть у вашей модели. Хотя объявление правильное, за исключением того, что UsersToView это не тип, но это локальная переменная, объявленная в контроллере, поэтому представление даже не может ее увидеть и пытается интерпретировать ее как неизвестный тип в a List<UsersToView> . По сути, вы сейчас говорите, что ваша модель представляет собой список неизвестных типов.

Вот почему компилятор говорит:

Не удалось найти тип или имя пространства имен ‘UsersToView’

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

 @model IEnumerable<users>
  

Поэтому, пожалуйста, обратите внимание, что теперь он используется users вместо UsersToView . Конечно, я написал IEnumerable , что является более общим, чем List так, что вы можете отправить массив users too в представление, но если вам нужны методы LINQ для List s, то, конечно, вы можете сделать:

 @model List<users>
  

Ответ №3:

Ваш код контроллера выглядит хорошо. Попробуйте использовать этот код в представлении

Первый способ

 @model IList<users>
  

Второй способ

 @model IEnumerable<users>