Sposta il proxy dei metodi di pagina ASP.NET dalla pagina
-
05-07-2019 - |
Domanda
Sto usando i metodi di pagina ASP.NET per la mia applicazione. Tutto funziona come un incantesimo ma non voglio che i miei metodi di pagina vengano generati in linea nella pagina.
-
Esiste un modo per spostarli in un file WebResource.axd o qualcosa di simile. Non voglio davvero scrivere il mio proxy solo per spostare quello generato dalla pagina.
-
Ho più metodi di pagina nella mia pagina di base. C'è un modo per dire al gestore dello script quali metodi voglio includere per quella particolare pagina poiché non sto usando tutti i metodi su tutte le pagine?
Soluzione
Ho più metodi di pagina nel mio pagina di base. C'è un modo per dirlo gestore degli script quali metodi desidero incluso per la pagina particolare come I non sto usando tutti i metodi su tutte le pagine?
Non sono sicuro che sia possibile. Quello che farei quindi è spostare i tuoi metodi specifici di una determinata pagina nella pagina stessa anziché nella pagina di base.
Quello che potresti fare è usare asmx webservices invece di usare i metodi di pagina per accedere alla logica lato server da JavaScript.
[System.Web.Script.Services.ScriptService]
public class MyWebService
{
[WebMethod]
public string GetData(int id)
{
//do some work
//return result
}
}
Nel tuo codice aspx o ascx fai quanto segue
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
}
Dovresti vedere come viene codificato l'oggetto di ritorno del tuo servizio web. Normalmente è codificato come Json. Non ricordo ora se questo deve essere specificato esplicitamente nel tuo web.config.
// Modifica:
Quello che ho dimenticato. È possibile utilizzare asp.net ScriptManager per registrare script e servizi Web:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/WebServiceScripts.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/Services/MyWebService.asmx" />
</Services>
</asp:ScriptManager>