MVC2 - основной вопрос, куда должна идти логика - PullRequest
6 голосов
/ 16 августа 2010

Начиная с MVC2, возиться с простой БД и просто использовать индексное представление для отображения таких элементов, как:

в контроллере:

    //
    // GET: /Equipment/

    public ActionResult Index()
    {
        return View(database.Artists.ToList());
    }

затем автоматически сгенерированный код в представлении:

        <td> <%: item.ArtistID %> </td>
        <td> <%: item.GenreID %> </td>

и т. Д. И т. П.

В моем примере вероятность того, что эти данные не были заполнены, может быть нулевой. Теперь, когда я попытался загрузить представление, я получу исключение NullReferenceException. Так где же будет этот код?

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

редактирование:

Спасибо за помощь.

У меня есть другой запрос. Что делать, если, скажем, я разрабатываю страницу типа просмотра индекса. На данный момент я отображаю все элементы на одной странице, но есть 2k элементов. Есть ли учебник или пример того, как это разделить? Я предполагаю, что мой контроллер просмотра индекса мог бы просто взять целочисленное значение диапазона из браузера, а затем я просто сказал бы следующее 100

Ответы [ 2 ]

3 голосов
/ 16 августа 2010

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

Это лучше всего сделать, IMO, возвращая то, что называется ViewModel.

Class MyFormViewModel
    List<Artist> artists {get; set;}

затем в вашем контроллере

MyFormViewModel fvm = new MyFormViewModel();

fvm.artists = database.Artists.ToList();
if (fvm.artists == null) fvm.artists = new List<Artist>();
return View(fvm)

Тогда ваше представление наследуется от MyFormViewModel

Затем рассмотрите возможность выделения логики в контроллере, который получает исполнителей и выставляет объекты другомуlayer

EDIT

Причина использования FormViewModel заключается в том, что если вы хотите добавить другие элементы для возврата к представлению, вы просто расширяете модель, делая ее очень простой для добавленияболее частичные представления и т. д.

РЕДАКТИРОВАТЬ 2

Если у вас есть частичный viwe, вызовите ArtistList, который принимает полный список исполнителей.Затем он просто просматривает список исполнителей и воспроизводит другой PV-вызов, скажем, Artist, которому дается один экземпляр Artist.

Затем вы можете сделать простую проверку в частичном представлении Artist для нулевого значения.

Или вы можете проверить в частичном представлении ArtistList нулевую запись и визуализировать другой PV с именем скажем NullArtist.

2 голосов
/ 16 августа 2010

Один из вариантов - отобразить другой вид, который отображается, когда артист не найден, например, «Художник не найден». В этом случае изменение будет в контроллере.

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

Вы всегда можете усовершенствовать ViewModel, если потребуется позже. На данном этапе есть более простые решения.

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