2010-08-16 3 views
6

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

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

// 
    // GET: /Equipment/ 

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

то автогенерируемая код в представлении:

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

и т.д. и т.п.

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

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

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

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

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

ответ

3

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

Это лучше всего выполнено, ИМО, возвращая так называемую 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

Тогда рассмотрим факторизуя логику в cntroller, который получает художников и множества объектов к другому слою

EDIT

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

EDIT 2

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

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

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

+0

Извините, я имею в виду, что одно поле в одной записи может быть пустым. Но ваш ответ имеет смысл, поэтому я просто изменю логику построения ненулевого списка и установил это как данные для viewmodel – baron

2

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

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

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

Смежные вопросы