Я работаю над своего рода приложением CMS / Wiki, чтобы помочь мне поэкспериментировать с новой средой Asp.Net MVC, и я пытаюсь обдумать некоторые аспекты организации кода.
Прямо сейчас у меня есть три представления, которые охватывают отображение статьи: индекс, редактирование и переименование. Все три представления отображают содержимое текущей страницы или заполнитель, указывающий, что страница не существует.
В настоящее время это выполняется с помощью следующего кода в методе действия для каждого представления:
MyPage myPage = null;
if (!string.IsNullOrEmpty(pageName)) {
myPage = mRepository.GetMyPage(pageName);
}
//Page does not exist.
if (myPage != null) {
ViewData["pageContent"] = myPage.GetParsedSource(new PageState());
ViewData["pageSource"] = myPage.Source;
ViewData["title"] = myPage.Title;
}
else {
ViewData["title"] = pageName;
ViewData["pageContent"] = "Page does not exist, feel free to create it!";
ViewData["pageSource"] = "";
}
ViewData["pageName"] = pageName;
Мой вопрос: куда на самом деле должна идти эта логика?
1) Контроллер (как он есть сейчас), который требует репликации вышеуказанного кода между методами действия?
2) Модель, значения по умолчанию для pageSource для слов, показанных выше? Это будет иметь обратную сторону при перемещении отображаемого текста в модель.
3) Вид, использующий оператор объединения нулей для преобразования пустых записей ViewData в их значения по умолчанию?
4) В Views, но добавьте дополнительные контроллеры для обработки случаев, когда pageName не существует.
EDIT:
Надеюсь, это должно прояснить ситуацию немного. Ход заявки выглядит следующим образом:
Когда пользователь вводит URL-адрес (то есть / pages / page_title), он попадает на экран, на котором отображается содержание статьи, а также гиперссылки с пометкой «изменить» и «переименовать».
При нажатии на кнопку редактирования отображается страница, которая содержит содержание статьи, а также элементы управления формой для редактирования источника статьи.
При щелчке по переименованию отображается страница, которая содержит содержание статьи, а также элементы управления формой для редактирования названия статьи.