ASP.NET: код позади или нет кода позади? - PullRequest
5 голосов
/ 20 января 2010

Почему кто-то хочет не использовать код, стоящий за файлом, чтобы серверный код был отделен от разметки? Разве это не должно быть одним из преимуществ .NET над классическим ASP?

Лично я думаю, что смешивание кода с разметкой делает код намного сложнее для понимания.

Я не хочу видеть, как эти проклятые <%%> (блоки на стороне сервера) соединены с разметкой, чёрт. Я ожидаю, что это в ASP.NET исключительно для обратной совместимости с Classic ASP, но я все время вижу примеры от MS, которые включают эти желтые скобки.

Я пытаюсь понять пример кода, который доступен для загрузки здесь и озадачен, почему любой из моих серверных разрывов, показанных здесь , не прерывается при выполнении кода хотя я вижу, что это было установлено в web.config. Так как я обычно работаю с code-behind, мне интересно, есть ли что-то в серверном коде в aspx, который обрабатывается иначе, что мешает мне отлаживать код runat = server.

Итак. Мои вопросы:

1) Почему кто-то хочет не использовать код, стоящий за файлом, чтобы серверный код был отделен от разметки?

2) Почему я не могу сломать серверную логику?

Ваше понимание и мнения также приветствуются по любому из моих связанных комментариев.

Ответы [ 6 ]

9 голосов
/ 20 января 2010

Возможность встроенного кода с использованием <% %> предназначена не только для обратной совместимости, но и для .NET, которая позволяет использовать некоторые (относительно!) Четкие и простые решения.Однако он часто используется не идеальным способом.Аналогично, код в выделенном коде, если его часто (как правило, фактически) используют не в идеале, как веб-элементы управления.

Наличие кода в выделенном фрагменте кода обычно не служит отдельные проблемы , но перемешать код спагетти в другом месте, чем у классического asp..NET позволяет вам иметь очень хорошо организованные решения, но это зависит от вас, чтобы это произошло.Наличие кода в коде позади страниц является , а не первым шагом в этом путешествии, именно там, где это путешествие может начаться.

Что касается того, почему ваши события не запускаются, скорее всего:

  • Событие фактически не вызывается.(Вы изменяете выбранный элемент в раскрывающемся списке, чтобы фактически вызвать это событие?)
  • На самом деле событие не подключено.В окне свойств этого элемента управления указано ли имя функции события, соответствующее рассматриваемому событию?(это самый простой способ; вы также можете использовать, например, handles keywork в vb)
  • Часто, когда мои события не запускаются, это потому, что я делаю что-то глупое, напримерне запустил мой код, или мой URL указывает на неправильное место.
2 голосов
/ 20 января 2010

Квадратные скобки, используемые в большинстве примеров MS, обычно предназначены для вызовов функций или ссылки на блок данных.

Например, <%# Databinder.Eval("MyColumn") %> будет использоваться в ретрансляторе.

Существуют также теги, которые используются для ссылки на атрибуты web.config, такие как строка подключения <%$ConnectionStrings:NorthwindConnection %>

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

1) Полагаю, если вы привыкли к разработке классического ASP, то это простой переход.

2) Не увидев вашу разметку, я бы не смог вам сказать, в чем ваша проблема. Если вы не достигли этой точки останова, это может быть вызвано одной из нескольких причин:

  1. Отладка может быть отключена
  2. Событие не происходит
  3. В вашей разметке нет ничего, что говорило бы элементу управления о том, что ваш метод используется в качестве обработчика события.
1 голос
/ 20 января 2010

Очень часто «примерный» код ASP.NET распространяется со встроенным кодом просто потому, что его легче распространять.Он самодостаточен, вы можете просто скопировать и вставить его в блокнот, сохранить его в формате .aspx в папке для тестового сайта и посмотреть, как он работает.Это, вероятно, не то, что вы хотите делать в рабочей среде.

Что касается более общего вопроса ... ASP.NET MVC технически все еще является ASP.NET и не использует файлы с выделенным кодом.Многие разработчики считают, что файлы с выделенным кодом просто заменяют один тип уродства на другой;лично я вижу это с обеих сторон, но я думаю, что истинная причина такого большого количества паршивого кода в классическом ASP была не супом тегов, а тем, что люди делали безумные вещи в «просмотре» кода, например, открывая соединения с базой данных,Пока вы этого не делаете, несколько серверных тегов не имеют большого значения.

На самом деле, если вы сделаете какое-либо связывание данных, у вас будет куча *Теги 1005 * и Bind смешаны с разметкой.Так что даже чистые веб-формы с выделенным кодом не всегда безупречно чисты.

0 голосов
/ 14 октября 2011

<%# DataBinder.Eval("Column") %> может сэкономить вам много лишнего кода из кода, и, на мой взгляд, это не так уж плохо для практики.

0 голосов
/ 14 октября 2011

2) Почему я не могу сломать серверную логику?

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

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