ASP.Net MVC 3 ViewModel с выпадающими списками - PullRequest
1 голос
/ 26 октября 2011

Я занимаюсь разработкой веб-приложения ASP.Net MVC 3.В настоящее время приложение подключено к базе данных, в которой есть несколько таблиц, две из которых - это категория (catId, Name) и Site (siteID, Name).

Я хочу создать представление с двумя выпадающими списками,один для каждой из упомянутых таблиц, так что пользователь может выбрать из, а затем запустить отчет.Для этого я создал viewModel для представления двух выпадающих списков

public class ReportSiteCategorySearchViewModel
{
    public SelectList categoryList { get; set; }
    public SelectList siteList { get; set; }
}

Затем в моем контроллере, который возвращает viewModel, у меня есть следующее

public ActionResult getEquipmentByCategoryAndSite()
    {
        ReportSiteCategorySearchViewModel viewModel = new ReportSiteCategorySearchViewModel
        {
            categoryList = new SelectList(categoryService.GetAllCategories().ToList(), "categoryID", "categoryTitle"),
            siteList = new SelectList(siteService.GetAllSites().ToList(), "siteID", "title")
        };

        return View(viewModel);
    }

Затем я передаюпредставление, которое принимает эту модель представления и записывает значения в раскрывающиеся списки

<div>
    <label for="ddlSite">Sites</label>
    @Html.DropDownList("ddlSite", Model.siteList, "All Sites")
    &nbsp;&nbsp;
    <label for="ddlCatgeory">Categories</label>
    @Html.DropDownList("ddlCatgeory", Model.categoryList, "All Categories")
</div>

Это работает, однако я не уверен, что это лучший способ сделать это.Мне просто интересно, мой метод правильный, есть ли лучший способ сделать это?То есть, что если мне понадобится еще 5/6 выпадающих списков из других таблиц, я должен просто добавить в текущую модель представления и т. Д.

Любая обратная связь будет принята с благодарностью.1016 *

1 Ответ

0 голосов
/ 28 октября 2011

Вы можете создать viewModel типа List<SelectList>. В вашем контроллере добавьте каждую таблицу (как SelectList, как вы делаете) к этой модели.Затем передайте представление модели, которая представляет собой список списков выбора.

Затем вы можете выполнить итерацию по каждому значению в вашем представлении:

<div>
@foreach(SelectList SL in Model)
{
   <label for="ddl"+SL>SL.Title</label>
   @Html.DropDownList("ddl"+SL.Title, sl.list, sl.items")
}

Возможно, вам потребуетсяизмените свой список SelectList, включив в него поле «Заголовок» или «Элементы».Делая это таким образом, вы можете продолжать добавлять элементы в список, и вам не нужно будет обновлять представление.

...