Aufrufen einer Web-Methode von ASPX-Code Hinter
Ich versuche herauszufinden, ein Weg, den ich nennen kann, der Web-Methode (die sich als eine öffentliche, statische Methode im CodeBehind einer aspx-Seite) aus einem anderen ASPX-Code Hinter der Seite.
Dies ist der code hinter der Seite A. aspx
public partial class PageA : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//other code not relevant is here
}
[WebMethod(true)]
public static string GetStringInfo()
{
//do some stuff here to build my string
//return string
}
}
Auf Seite B, ich muss in der Lage sein zu rufen GetStringInfo() beim laden der Seite oder eine andere Veranstaltung, um sich die Informationen. die GetStringInfo (), ist Recht Komplex und aus Gründen, die außerhalb meiner Kontrolle sind, können nicht verschoben werden, an anderer Stelle oder wieder aufgebaut gegenwärtig.
Wie kann ich verbrauchen die web-Methode, die oben von einer anderen Seite den code hinter?
Habe ich versucht, das instanziieren einer Kopie von der anderen Seite (PageB), wie:
public partial class PageB : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
PageA page = new PageA();
page.GetStringInfo();
}
}
Ist hier das problem, da es dynamisch kompiliert wird, weiß ich nicht eine einfache namespace zu verweisen und zuzugreifen. Ich habe versucht, das hinzufügen ein, und er ignoriert es.
Diesem Projekt steht .net 3.5, C#, und ist ein Website-Projekt (nicht-web-Anwendung).
Jede Hilfe ist willkommen!
Welche Art von Fehler sind Sie immer mit der aktuellen code-snippet?
Das problem ich bin immer ist es nicht die Feststellung, dass PageA überhaupt existiert. Also So wie ich es versuche zum instanziieren der Seite, es fragt nur mich zum generieren einer stub-Methode für Sie statt finden, die Klasse der anderen Seite.
Sind die 2 Seiten in der gleichen namespace? Wenn kein namespace deklariert, auf die 2 Klassen, versuchen ausdrücklich deklarieren beide Seiten in der gleichen namespace.
BTW: sehr schlechtes design, um die Seiten voneinander abhängig wie die. Eine Seite sollte sich auf Entitäten und Logik nicht auf einer anderen Seite und steuert es enthält... in der Tat seit dem GetStringInfo statisch ist, können Sie nicht einmal Zugang zu der Seite Steuerelemente aus, und es erzählt Sie, dass solche Methode hat, um woanders zu sein und nicht in die Seite.
InformationsquelleAutor Delebrin | 2011-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die
GetStringInfo
Methode ist statisch, Sie brauchen nicht eine Instanz vonPageA
um es aufzurufen:dann sind Sie nicht, Sie zeigt uns alles. Den code, wie du gezeigt hast, es sollte so funktionieren, wie ich Ihnen gezeigt habe. Stellen Sie außerdem sicher, dass, wenn die
PageA
Klasse definiert ist, in einem anderen namespace als derPageB
dieser namespace gebracht wurde, in den Bereich. By the way, sind diese 2 Seiten in der gleichen ASP.NET Anwendung?Sie sind beide innerhalb der gleichen Web-Site-Lösung. Es ist nicht eine echte web-Anwendung, die ist, was ich glaube, ist Teil des Problems. Ich kann nur hinzufügen, namespaces ausdrücklich auf beide Seiten, aber der namespace ignoriert, da die Seiten werden dynamisch zusammengestellt.
wenn es eine web-site erhalten Sie möglicherweise Fehler in Visual Studio design-Zeit. Ignorieren Sie. Ihre Website laufen. Wird es funktionieren. Das problem ist, dass in einer website gibt es keine Assemblys kompiliert, die zur design-Zeit. Also, wenn Sie sich im PageB, der VS-designer nicht wirklich wissen, was die PageA enthält. Es ist dumm, aber Sie sollte sich keine sorgen. Sie erhalten keine Intellisense-aber wenn Sie Ihre Website laufen, Sie können auch platzieren Sie Haltepunkte im inneren, um sicherzustellen, dass es funktioniert. Ich vermute, dass Sie waren verwirrt durch das fehlen von Intellisense.
InformationsquelleAutor Darin Dimitrov