2008-09-20 5 views
9

Какова цель кода, находящегося за файлом просмотра в ASP.NET MVC, помимо установки общего параметра ViewPage?Код в ASP.NET MVC

ответ

12

Вот мой список причин, почему фоновый код может быть полезен взят из my own post Я уверен, что есть еще много

  • Databinding управление наследием ASP.NET -.. если альтернатива недоступна или требуется временное решение.
  • Просмотреть lo gic, который требует рекурсии для создания своего рода вложенного или иерархического HTML.
  • Просмотреть логику, которая использует временные переменные. Я отказываюсь определять локальные переменные в суп-супе! Я бы хотел, чтобы они были как свойства класса вида, по крайней мере.
  • Логика, которая относится только к одному виду или модели и не относится к HtmlHelper. В качестве примечания я не думаю, что HtmlHelper должен знать о каких-либо классах «Модель». Это прекрасно, если он знает о классах, определенных внутри модели (например, IEnumerable, но я не думаю, что, например, у вас должен быть HtmlHelper, который принимает ProductModel. Методы HtmlHelper становятся видимыми из всех ваших просмотров при вводе Html + dot, и я действительно хочу свести к минимуму этот список как можно больше.
  • Что делать, если я хочу написать код, который использует HtmlGenericControl и другие классы в этом пространстве имен, чтобы генерировать мой HTML объектно-ориентированным способом (или у меня есть существующий код, который делает что я хочу порт).
  • Что делать, если я планирую использовать другой механизм просмотра в будущем. Возможно, я захочу оставить часть логики в стороне от суп-тега, чтобы упростить повторное использование позже.
  • Что делать, если я хочу иметь возможность переименуйте мои классы моделей и автоматически переформатируйте мой просмотр, не перейдя в view.aspx и не изменив имя класса.
  • Что делать, если я координирую с HTML-дизайнером, которому я не доверяю, чтобы не испортить «суп-суп» и вы хотите написать anythin за очень простой цикл в файле .aspx.cs.
  • Если вы хотите отсортировать данные на основе опции сортировки по умолчанию по умолчанию. Я действительно не думаю, что контроллер должен сортировать данные для вас, если у вас есть несколько параметров сортировки, доступных только из представления.
  • Вы действительно хотите отлаживать логику представления в коде, который actullky выглядит как .cs, а не HTML.
  • Вы хотите написать код, который позже может быть учтен и использован в другом месте - вы еще не уверены.
  • Вы хотите прототипировать то, что может стать новым HtmlHelper, но вы еще не решили, достаточно ли его общего или нет, чтобы гарантировать создание HtmlHelper. (в основном то же, что и предыдущая точка)
  • Вы хотите создать вспомогательный метод для рендеринга частичного представления, но вам нужно создать модель для этого, вырвав данные из представления главной страницы и создав модель для частичного управления, которая основанный на текущей итерации цикла.
  • Вы считаете, что программирование сложной логики IN SINGLE FUNCTION - это устаревшая и неподвластная практике практика.
  • Вы сделали это перед RC1 и не столкнулись с какими-либо проблемами!

Да!Некоторые взгляды не нуждаются в кодовом коде вообще.

Да! Это отстой, чтобы получить глупый файл .designer, созданный в дополнение к файлу .cs.

Да! Его вид раздражает, чтобы получить эти маленькие + знаки рядом с каждым видом.

BUT - На самом деле это не так сложно, чтобы НЕ поместить логику доступа к данным в код.

Они, безусловно, НЕ evil.

3

Не существует цели. Только не использовать его для установки модели

ViewPage<Model> 

См this BlogPost для получения дополнительной информации, кроме.

+0

Даже установка модели может быть выполнена без файла с кодом, используя уродливый синтаксис, такой как ViewPage`1 [Model] :) – 2008-09-21 19:47:25

+0

есть PLENTY целей. см. мой пост ниже. Кстати, автор этого блога говорит, что его трюк называет их «злыми», чтобы заставить людей замечать. они абсолютно НЕ Злые. я не могу дождаться, чтобы увидеть некоторые из ужасных суп-суп, которые получат люди, пытающиеся следовать этому шаблону. – 2009-02-09 05:23:47

-1

Это отличный вопрос. Не MVC существует в среде ASP.NET, не используя конкретный шаблон MVC.

Посмотреть = ASPX

Controller = aspx.cs (отделенного кода)

Модель = POCO (Plain Old C#/VB/.NET объекты)

Я задаюсь вопросом, почему добавил функциональность Рамка MVC полезна. Я много лет работал над Java nd MVC и Java Struts несколько лет назад (2001) и нашел концепции в MVC как решение проблем организации и развития интернет-приложений в то время, но затем обнаружил, что кодовое слово упростило концепцию контроллера и было быстрее развиваться и общаться с другими. Я уверен, что другие не согласны со мной, и я открыт для других идей. Самое большое значение, которое я вижу для MVC, - это шаблон контроллера для разработки Интернета, источник для одного входа для интернет-приложения. Но, с другой стороны, этот шаблон довольно прост для реализации с использованием современных технологий ASP.NET. Я слышал, что другие говорят, что модульное тестирование - это аргументация. Я также понимаю, что мы использовали JUnit с нашей MVC-картой в 2001 году; но я не был убежден, что он упрощает тестирование для использования структуры te MVC.

Спасибо за чтение!

+0

В ASP.NET MVC View представляет собой страницу aspx с кодом (aspx.cs), а контроллер обычно находится где-то в другом месте (SomeController.cs). – Casper 2008-09-20 15:02:46

+1

Обычный ASP.NET не является MVC. Карты с кодовым кодом как для контроллера, так и для модели, а также для контроллера, полностью связаны. Вся точка MVC отделяет контроллер и представление, поэтому один контроллер может иметь много разных видов, или один вид может обрабатывать многие контроллеры. – 2008-09-20 15:34:35

3

При this Blogpost является рабочим примером удаления кода позади. Единственная проблема, с которой я столкнулся, заключается в том, что она не может устанавливать пространства имен в классе.

0

Codebehind предоставляет некоторые из сильной типизации, а также поддержку intellisense, которую вы получаете в представлении. Если вас не волнует какая-либо из этих двух функций, вы можете удалить ее.

Например, я обычно использую NVelocity ViewEngine, потому что он чистый и довольно прямой.

8

В конечном счете, вопрос, который вы спросите себя это:

ли этот код A) Процесс, хранить, извлекать, выполнять операции по или анализировать данные, или B) Помощь для отображения данных?

Если ответ A, он принадлежит вашему контроллеру. Если ответ равен B, то он принадлежит в представлении.

Если B, в конечном счете, это вопрос стиля. Если у вас есть довольно длинные условные операции, чтобы попытаться выяснить, отобразите ли вы что-то для пользователя, вы можете скрыть эти условные операции в коде, расположенном в Property. В противном случае кажется, что большинство людей бросают код в линию на передний край, используя теги <%%> и <% =%>.

Первоначально я положил все моя логика отображения внутри тегов <%%>. Но в последнее время я взял на себя что-то грязное (например, длительное условие) в моем коде, чтобы сохранить мой XHML в чистоте.Трюк здесь - дисциплина - слишком заманчиво начинать писать бизнес-логику в коде позади, что именно то, что вы должны сделать в MVC не.

Если вы пытаетесь перейти от традиционного ASP.NET к ASP.NET MVC, вы можете использовать код позади, пока не почувствуете практические действия (хотя это все еще не мешает вам вводить бизнес-логику внутри . <%%>

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