Эквивалент ASP.NET на стороне сервера включает

Хотя классический метод ASP на стороне сервера включает работу в ASP.NET, у меня сложилось впечатление, что это не лучший метод. Как я «должен» достигать того же эффекта?

Вот как я это делаю сейчас:
<!-- #include file ="functionlib.aspx" -->


person Scott    schedule 21.05.2009    source источник
comment
Хотя это и не так конкретно, как ваш вопрос, вы можете найти его полезным: stackoverflow.com/questions/23899/   -  person Sean Hanley    schedule 21.05.2009


Ответы (4)


Теперь у вас есть несколько вариантов, которые обеспечивают этот эффект, но другим способом.

  • Пользовательские элементы управления (.ascx)
  • Мастер-страницы (.master)
  • Элементы управления на стороне сервера (.dll)
  • Библиотеки классов (.dll)
  • Классы App_Code (.cs / .vb)

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

Следовательно, вы должны написать библиотеку классов, содержащую методы, и импортировать их в свое приложение / aspx.

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

Если вы ищете элементы управления на основе шаблонов, которые можно использовать на многих страницах, то вам нужны пользовательские элементы управления.

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

Если вы просматриваете библиотеку классов / методов, тогда вы создадите библиотеку классов или воспользуетесь классом app_code, который может быть скомпилирован JIT при первом вызове. Этот можно с некоторой натяжкой рассматривать больше как классический ASP, но на самом деле он функционирует больше как класс из библиотеки классов как единое целое. Вы можете вызвать его из внутреннего кода или тегов ‹%%> в вашем коде aspx / ascx, не требуя ссылки на библиотеку классов.

Мы больше не используем «включает» как таковое, но каждый из этих инструментов в вашем наборе инструментов позволяет вам предоставлять аналогичные концепции для разных сценариев. Как разработчик вы будете по-разному взаимодействовать со всем жизненным циклом ваших веб-страниц. ASP.NET сильно отличается от классического ASP. Это действительно требует другого взгляда / подхода и требует некоторого терпения, чтобы выяснить различия.

person BenAlabaster    schedule 21.05.2009
comment
Не забывайте классы App_Code - они ближе к классической модели ASP, чем к библиотеке классов. - person Mark Brackett; 21.05.2009

Как насчет <% Response.WriteFile("myFile.aspx"); %>?

См .: https://support.microsoft.com/en-us/help/306575/how-to-dynamically-include-files-in-asp-net

person Stuart    schedule 19.08.2010
comment
Просто и эффективно. Мне нравится :). - person Steven de Salas; 11.03.2015
comment
просто для пояснения, даже если включенный файл заканчивается на .aspx, он не будет обрабатываться движком asp.net - person mxmissile; 14.04.2015

Если вы используете ASP.NET MVC, то Html.RenderPartial - ваш друг.

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial.aspx

Частичное представление может быть реализовано как .ascx или .aspx, и размещение вышеуказанного вызова на вашей «основной» странице в основном говорит: «получить вывод из этого частичного представления и отобразить его здесь».

Частичные представления могут использовать ViewData, полученные вашим основным представлением от контроллера.

person Martin Peck    schedule 21.05.2009
comment
Только если вы работаете в ASP.NET MVC. - person Mark Brackett; 21.05.2009
comment
Э ... да. Почему-то я читал MVC в вопросе, когда его явно нет. Люди все еще занимаются устаревшим ASP.NET ??? ;-) - person Martin Peck; 21.05.2009
comment
lol @ Мартин ... эээ, да. MVC - это просто причуда, которую все перестанут использовать на следующей неделе. Пусть начнутся религиозные войны;) - person BenAlabaster; 21.05.2009
comment
Мартин, определенно люди используют классический ASP.NET. MVC по-прежнему груб. Не все хотят возвращаться к встраиванию встроенного C # в aspx-страницы. Некоторым из нас нравится код программной части и декларативные элементы управления. ;-) - person x0n; 21.05.2009
comment
Ага - ASP.NET MVC хоть и не является увлечением, но определенно не для всех. Если у вас есть инвестиции в серверные элементы управления и т. Д., Тогда классический FTW ASP.NET! Для меня, однако, лучше быть ближе к металлу, а фреймворк MVC чище. YMMV. В будущем я постараюсь не вставлять текст MVC в вопросы при чтении :-) - person Martin Peck; 22.05.2009

Похоже, вам нужно рассмотреть всю концепцию MasterPages.

Если вы не хотите просто импортировать функции и другие утилиты (не HTML-контент). Если это так (и вы используете модель кода программной части), вы должны просто иметь возможность включить соответствующий файл или пространство имен с помощью команды import в верхней части страницы .vb (отрегулируйте соответственно для C #).

person TheTXI    schedule 21.05.2009