Является ли встроенный код на ваших aspx-страницах хорошей практикой?

Если я использую следующий код, я теряю возможность щелкнуть правой кнопкой мыши по переменным в коде позади и выполнить рефакторинг (переименовать в этом случае) их

<a href='<%# "/Admin/Content/EditResource.aspx?ResourceId = " + Eval("Id").ToString() %>'>Edit</a>

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

<a runat = "server" id = "MyLink">Edit</a>

а затем в коде позади

MyLink.Href= "/Admin/Content/EditResource.aspx?ResourceId = " + myObject.Id;

Мне действительно интересно услышать, думают ли люди, что вышеупомянутый подход лучше, поскольку это то, что я всегда вижу на популярных сайтах программирования и блогах (например, Скотт Гатри), и это меньший код, но я предпочитаю использовать ASP.NET, потому что он скомпилирован и предпочитают знать, если что-то сломано, во время компиляции, а не во время выполнения.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
3 159
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Я бы не назвал это плохой практикой (некоторые не согласятся, но почему они вообще предоставили нам эту возможность?), Но я бы сказал, что вы улучшите общую читаемость и ремонтопригодность, если не подчинитесь этой практике. Вы уже изложили хороший момент, и это ограничение функций IDE (например, проверка времени разработки, предупреждение времени компиляции и т. д.).

Я мог бы продолжать и говорить о том, сколько принципов он нарушает (повторное использование кода, разделение задач и т. д.), Но я могу вспомнить множество приложений, которые нарушают почти все принципы, но продолжают работать через несколько лет. Я, например, предпочитаю делать свой код как можно более модульным и поддерживаемым.

"но почему они вообще дали нам такую ​​возможность?" Потому что именно так это сделал ASP 3.0? Есть причина, по которой у нас есть оболочка VB.NET вместо C#; Microsoft [часто] особенно серьезно относится к обратной совместимости и поддержанию прежних ментальных моделей. Как вы правильно заметили, быть способный для написания кода, подобного ASP 3, не обязательно делает это хорошей идеей!

ruffin 09.03.2013 02:05

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

Обязательно используйте include, чтобы уменьшить избыточность (СУХОЙ - не повторяйтесь)

Тебе решать. Иногда код "спагетти" легче поддерживать, чем создавать / использовать полную систему шаблонов для чего-то простого, но как только вы получите довольно сложные страницы или, более конкретно, как только вы начнете включать много логики в саму страницу, он может получить пачкается очень быстро.

Я думаю, что интересно, что больше asp.net требует кода на страницах aspx. Список в 3.5 и даже ASP.NET MVC. MVC в основном не имеет кода, но содержит код на страницах для отображения информации.

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

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

Я всегда стараюсь думать о том, что если бы у меня был дизайнер (HTML, CSS, что-нибудь), что бы я делал с ним и что бы я делал в коде, и как мы не наступаем друг другу на пятки.

Это только плохая практика, если вы не можете хорошо ее инкапсулировать.

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

Я стараюсь сохранить тонны if вне шаблона hte, но чрезмерная инкапсуляция приводит к необходимости искать в 13 разных местах, чтобы понять, почему div x не запускается для клиента, так что это компромисс.

Это не так, но иногда это неизбежное зло.

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

Если вы создаете приложения ASP.NET MVC, я думаю, вы наверняка застряли во встроенном коде. Но создание шаблона MVC - лучший способ сделать это с точки зрения ремонтопригодности и тестируемости.

Подводя итог: встроенный код - не лучшая практика, но неизбежное зло.

Мой 2цц.

Обычно я использую вот так.

<a href='<%# DataBinder.Eval(Container.DataItem,"Id",""/Admin/Content/EditResource.aspx?ResourceId = {0}") %'>

Другие вопросы по теме