#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>
, но не могу перейти к дополнительному. UsersToView2. @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>