используйте Razor, чтобы заполнить выпадающий список данными Linq2Sql - PullRequest
0 голосов
/ 01 декабря 2011

Я экспериментирую с ASP.NET MVC3 и хочу просто заполнить раскрывающийся список данными, полученными из класса LINQ2SQL, например, контроллер

(я знаю, Linq не принадлежит контроллеру)

var allUsers = (from u in _userDataContext.Users
                            select u).ToList();
            ViewBag.allUsers = allUsers.ToList();
            return View();

просмотр:

<select id="drop_heroes">
        @foreach (var u in ViewBag.allUsers)
        { 
            <option value="@u.pk_userid">@u.email</option>
        }
    </select>

That works fine, but I would like to use Razor @Html.Dropdownlist to create the same dropdown list, but can't find any info to make this work with Linq data. 

Спасибо, что направили меня в правильном направлении!

1 Ответ

1 голос
/ 01 декабря 2011

Я знаю, 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.

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