У меня есть функция с тегом WebMethod , разработанная для одной веб-формы, которую я хотел бы повторно использовать в другой. Проще всего было бы просто повторно использовать его на месте, но очевидные синтаксические догадки не работают.
Моя история - C ++ & C #, поэтому при попытке сослаться на общий (статический) метод я сначала обращаюсь к classname.method(parameters)
. Но это не сработало, поэтому я пошел в Google, и там сказали, что синтаксис classname.method(parameters)
.
Я попытался добавить слово Public
в определение объекта первой страницы (оно остается в приведенных ниже фрагментах кода), но подсказка о проблемах защиты не дала результатов. Я также пытался использовать Imports Directories_DeptPhoneList
в PeopleSearch коде, но безрезультатно.
Я надеюсь найти решение лучше, чем «вырвать функцию из WebForm и поместить ее в общий класс с другим уровнем издержек вызова».
Код возврата с первой страницы:
Public Partial Class Directories_DeptPhoneList
Inherits System.Web.UI.Page
...
<System.Web.Services.WebMethod()>
Public Shared Function SearchRequested(key As String) As String
... SQL lookup, results formatted into table rows, one row per match
... str = "<tr>....</tr>" no <table> tag, just guts of the table
Return str
End Function
...
End Class
Второй код поддержки страницы "Ищите и это тоже":
Partial Class Directories_PeopleSearch
Inherits System.Web.UI.Page
...
<System.Web.Services.WebMethod()>
Public Shared Function DoSearch(key As String) As String
Dim deptRows As String = Directories_DeptPhoneList.SearchRequested(key)
... More lookups & data formatting another str = "<tr>....</tr>"
Return deptRows & str
End Function
...
End Class
Я ожидаю, что смогу вызвать функцию Shared, но Visual Studio выделяет Directories_DeptPhoneList.SearchRequested
при вызове метода из объекта PeopleSearch . Жалоба на ошибку гласит:
Directories_DeptPhoneList не объявлен. Может быть недоступен из-за уровня защиты