Вопрос относительно генерации ASP.NET MVC "Create" Views - PullRequest
0 голосов
/ 28 января 2010

В простейшем случае я создаю «Создать представление» для списка задач и хочу, чтобы пользователь мог выбрать «Категория» из связанной таблицы через раскрывающийся список.

Должен ли я

  1. Создать пользовательскую модель, которая содержит задачу и IEnumerable?
  2. Создание экземпляра CategoryController из «Представления создания задачи» и привязка DDL с помощью метода на CategoryController?
  3. Еще один вариант, о котором я не подумал?

Какой подход лучше всего подходит для шаблона проектирования MVC? Что вы используете, и что более важно, почему?

Ответы [ 2 ]

2 голосов
/ 28 января 2010

Вы можете сделать две вещи:

а) Быстрый взлом

public ActionResult Create() {
 ViewData["myList"] = new SelectList( listOfCategories, "Name","CategoryId");
 return View()
}

Create.aspx
...
 <%= Html.DropDown("categoryId", ViewData["myList"] as SelectList,"-");
...

б) Создать ViewDataModel.

public class CreateProductViewData
{
    public Product product { get; private set; };
    public SelectList Categories { get; private set; }

    public CreateProductViewData(Product p) {
          product = p;
          Categories = new SelectList( listOfCategories, "Name","CategoryId");
   }

}

public ActionResult Create()
{
   Product p = new Product() { name="New Product..." } ;
   return View(new CreateProductViewData(p));
}


in Create.aspx
  ...Inherits="System.Web.Mvc.ViewPage<CreateProductViewData>" %>

  ..
  ..
  <%= Html.DropDown("CategoryId", Model.Categories, "-");

Я в основном использую подход B, потому что он перемещает много кода из контроллера в код «Что необходимо для отображения этой страницы», не загромождая код «КАК отображать данные». *

Так что в действительности у меня есть

  • Код, который действует (контроллер)
  • Код, который подготавливает представление путем загрузки вторичных данных (объект ViewData)
  • Код, который отображает представление (.aspx)

Обычно я могу использовать ViewDataModel для редактирования и создания.

0 голосов
/ 28 января 2010

1 - самый «правильный» способ.

2 - это просто зло, ваша спина в мире вебформ и отбрасывание чистого разделения проблем.

3 не нужно, потому что я не знаю, сколько вы получите вместо 1.

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