2009-07-30 2 views
0

Я использую ASP.NET Методы страниц для своего приложения. Все работает как прелесть, но я не хочу, чтобы мои методы страниц генерировались встроенными на странице.Перемещение ASP.NET Методы страниц Прокси со страницы

  1. Есть ли способ переместить их в файл WebResource.axd или что-то подобное. Я действительно не хочу писать свой собственный прокси, чтобы переместить сгенерированный файл с страницы.

  2. У меня есть несколько методов страниц на моей базовой странице. Есть ли способ сообщить менеджеру сценариев, какие методы я хочу включить для конкретной страницы, поскольку я не использую все методы на всех страницах?

ответ

2

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

Я не уверен, возможно ли это. Тем не менее, я должен был бы переместить ваши методы, специфичные для определенной страницы на самой самой странице, а не на базовой странице.

Что вы можете сделать, это использовать 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> 
+0

Проблема заключается в том, что мне нужны методы страницы в органах управления, которые ставятся на страницы, основанные на параметрах пользователей. Я надеялся избежать написания прокси, потому что мне нужно будет реорганизовать два места. Если мы напишем слишком много методов, я переведу их в веб-службу. Мне также придется обрабатывать аутентификацию. PageMethods были идеальны для меня, за исключением того, что я хочу, чтобы они были в элементах управления, но если мне нужно, я напишу веб-сервис. – Stilgar

+0

У меня была примерно такая же проблема. Я также хотел иметь такие функции в UserControls вместо самой страницы. Но так как это невозможно, я переместил все на webservices, что на самом деле не так уж плохо в конце. – Juri

Смежные вопросы