Я знаю, Linq не принадлежит контроллеру
Тогда почему вы используете его в контроллере?Во всяком случае, по крайней мере, это хорошо, что вы это знаете.
Вот пример.Как всегда в приложении ASP.NET MVC, вы начинаете с определения модели представления, которая будет представлять данные, которые вам нужны в представлении.Таким образом, в вашем случае вам нужно отобразить раскрывающийся список, чтобы определить список пользователей и идентификатор выбранного пользователя:
public class MyViewModel
{
public string SelectedUserId { get; set; }
public IEnumerable<SelectListItem> Users { get; set; }
}
, а затем определить действие контроллера, которое будет заполнять эту модель представления из вашего хранилища и обрабатывать ее.на представление:
public ActionResult Index()
{
var model = new MyViewModel
{
Users = _userDataContext.Users.ToList().Select(x => new SelectListItem
{
Value = x.pk_userid.ToString(),
Text = x.email
})
}
return View(model);
}
и, наконец, у вас будет представление, которое будет строго типизировано для вашей модели представления, и используйте HTML-помощники для создания выпадающего списка:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.SelectedUserId, Model.Users)
<button type="submit">OK</button>
}
.:
- Использование моделей представлений
- Использование строго типизированных представлений
- Использование строго типизированных помощников HTML для создания разметки, такой как элементы формы и поля ввода
- Избавление от слабо типизированных структур, таких как ViewBag
Если вы будете следовать этим простым правилам, вы увидите, насколько проще станет ваша жизнь как разработчика ASP.NET MVC.