У меня есть несколько методов страницы в моей базовой страницы. Есть ли способ рассказать менеджеру сценариев , какие методы я хочу , включенные в данную страницу, так как я не использую все методы на всех страницах?
Я не уверен, возможно ли это. Тем не менее, я должен был бы переместить ваши методы, специфичные для определенной страницы на самой самой странице, а не на базовой странице.
Что вы можете сделать, это использовать asmx webservices вместо использования методов страницы для доступа к серверной логике из JavaScript.
[System.Web.Script.Services.ScriptService]
public class MyWebService
{
[WebMethod]
public string GetData(int id)
{
//do some work
//return result
}
}
В вашем ASPX или ASCX кода вы следующие
function someFunction(){
WebServiceNamespace.MyWebService.GetData(123, onSuccessCallback, onErrorCallback);
}
function onSuccessCallback(result){
//process your result. Usually it is encoded as JSON string
//Sys.Serialization.JavaScriptSerializer.deserialize(...) can be used for deserializing
}
function onErrorCallback(){
//display some info
}
Вы должны смотреть на как возвращающийся объект вашего веб-сервиса кодируется. Обычно он кодируется как Json. Теперь я не помню, должно ли это явно указываться в вашем web.config.
// Редактировать:
Что я забыл. Вы можете использовать asp.net ScriptManager для регистрации скрипты и веб-сервисы:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/WebServiceScripts.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/Services/MyWebService.asmx" />
</Services>
</asp:ScriptManager>
Проблема заключается в том, что мне нужны методы страницы в органах управления, которые ставятся на страницы, основанные на параметрах пользователей. Я надеялся избежать написания прокси, потому что мне нужно будет реорганизовать два места. Если мы напишем слишком много методов, я переведу их в веб-службу. Мне также придется обрабатывать аутентификацию. PageMethods были идеальны для меня, за исключением того, что я хочу, чтобы они были в элементах управления, но если мне нужно, я напишу веб-сервис. – Stilgar
У меня была примерно такая же проблема. Я также хотел иметь такие функции в UserControls вместо самой страницы. Но так как это невозможно, я переместил все на webservices, что на самом деле не так уж плохо в конце. – Juri