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

StackOverflow https://stackoverflow.com/questions/68509

  •  09-06-2019
  •  | 
  •  

Вопрос

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

<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, потому что он компилируется, и предпочитаю знать, если что-то сломалось, во время компиляции, а не во время выполнения.

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подвести:встроенный код не является хорошей практикой, но это необходимое зло.

Мои 2 цента.

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

<a href='<%# DataBinder.Eval(Container.DataItem,"Id",""/Admin/Content/EditResource.aspx?ResourceId={0}") %'>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top