#c# #asp.net
#c# #asp.net
Вопрос:
На данный момент мой веб-проект в asp.NET состоит из 5 файлов .aspx. Я определил одни и те же функции в каждом файле .aspx. Чего я хочу, так это способа создать свою собственную библиотеку / файл функций, которые я мог бы включать в свои скрипты .aspx.
При поиске решения я нашел только это, динамически включающее файлы в ASP.NET Который используется для динамического включения HTML и клиентских скриптов в .aspx. Так что это не то, что мне нужно.
Комментарии:
1. .asp — это «классический ASP», .aspx — это ASP.NET на какую из этих двух вы ссылаетесь?
Ответ №1:
Вы можете очень легко создать библиотеку в ASP.NET.
Определите пространство имен и создайте новые классы в этом пространстве имен (обычно каждый класс в отдельном файле, но это не принудительно)
Если в ваших файлах ASPX нет кода, я бы рекомендовал добавить его, однако независимо от того, есть ли код или нет, вам нужно убедиться, что вы включили пространство имен файлов библиотеки, прежде чем вы сможете получить доступ к библиотечным классам и их методам.
Синтаксис для включения пространства имен в ASPX-файл таков:
<%@ Import Namespace="mylibrarynamespace" %>
В коде, лежащем в основе:
using mylibrarynamespace;
Надеюсь, это поможет.
Ответ №2:
Как насчет создания базового класса, из которого происходят все ваши классы page? Это кажется самым простым способом.
Ответ №3:
Существует множество подходов, которые вы можете использовать для совместного использования кода между страницами. Это действительно зависит от того, какого типа функциональности вы пытаетесь достичь.
Вот некоторые из них, с которыми я сталкивался в прошлом:
- Используя базовую страницу — вы можете сделать свои aspx-страницы производными от пользовательского класса, который запускается из Page. Таким образом, вы можете вызвать base.methodName(). Это особенно полезно, если вам нужен доступ к частным / защищенным участникам / событиям.
- Поместите методы в класс — вы можете создать пользовательский класс, в котором хранятся ваши методы. Я предлагаю сделать это, если все методы связаны, и имеет смысл объединить их в одном классе. Ваши требования также будут определять, должен ли класс быть статическим / создаваемым экземпляром (для меня это больше похоже на выбор между System.IO.File и System.IO.FileInfo). Недостатком этого является то, что вы не можете получить доступ к каким-либо закрытым элементам страницы или запустить какое-либо из ее событий.
- Методы расширения — это что-то вроде # 2, за исключением его статичности и тесной привязки к типу страницы. Синтаксис делает его более читаемым (на мой взгляд). Однако существуют определенные рекомендации по проектированию, которые вам следует учитывать.
Ответ №4:
Просто создайте файл .cs и поместите его в свой каталог App_Code. Сделайте свой класс и соответствующие функции общедоступными, и все готово.
Ответ №5:
выполните эти 5 простых шагов! чтобы сэкономить тонны повторных записей функций между asp.net веб-формы!
1) Создайте класс внутри вашей папки App_Data: (щелкните правой кнопкой мыши приложение> Добавить > Добавить ASP.Net папка) (Добавить > Новый элемент > Класс)
важно! когда вы добавляете эти классы, вы должны переключить действие сборки на «compile» вместо «content» в свойствах файла, иначе ваш codebehind не распознает импортированные пространства имен.
2) Внутри класса создайте методы:
namespace applicationName.App_Code
{
public class ClassName
{
public string classMethod()
{
return "hello";
}
}
}
3) В коде любой формы включите этот заголовок класса:
using applicationName.App_Code; //add this
4) В коде этой формы создайте экземпляр класса:
ClassName classInstanceName = new ClassName(); //add this
5) Вызовите метод в вашей форме codebehind
classInstanceName.classMethod()