L'appel d'une Méthode Web de Code ASPX Derrière

J'essaie de trouver un moyen que je peux appeler une Méthode Web (situé comme une méthode statique publique dans le code-behind d'une page aspx) à partir d'un autre ASPX Code-Behind de la page.

C'est le code-behind de la Page 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
    }
}

Sur la page B, j'ai besoin d'être en mesure d'appeler GetStringInfo() lors du chargement de la page ou d'un autre événement pour obtenir les informations. le GetStringInfo() est assez complexe et pour des raisons hors de mon contrôle, ne peuvent pas être déplacées ou reconstruit actuellement.

Comment puis-je consommer de la méthode web ci-dessus à partir d'une autre page de code derrière?

J'ai essayé de l'instanciation d'une copie de l'autre page (PageB), tels que:

public partial class PageB : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       PageA page = new PageA();
       page.GetStringInfo();        
    }
}

Le problème ici, c'est car il est compilé dynamiquement, je n'ai pas un simple espace de noms de référence et d'accès. J'ai essayé d'ajouter un, et il l'ignore.

Ce projet est sur .net 3.5, C#, et est un projet de site web (pas d'une application web).

Toute aide est très appréciée!

  • Il est statique, l'appeler avec PageA.GetStringInfo();
  • Ce genre d'erreurs en êtes-vous avec le courant extrait de code?
  • Le problème que j'obtiens est qu'il n'est pas de trouver que PageA même qu'il existe. Alors que j'essaye d'instancier la page, il demande juste de me générer une méthode de stub pour elle au lieu de trouver la classe de l'autre page.
  • Sont les 2 pages dans le même espace de noms? Si il n'y a aucun espace de noms déclarés sur les 2 classes, essayez explicitement déclarer deux pages dans le même espace de noms.
  • J'ai essayé explicitement donnant à la fois un espace de noms, mais comme ce n'est compilé dynamiquement (site web, pas de l'application web) c'est à peu près ignore la namespacing à l'extérieur de App_Code.
  • BTW: très mauvaise conception de pages inter-dépendants comme ça. Une page devrait s'appuyer sur des entités et de la logique, pas sur une autre page et les contrôles qu'il contient... en fait depuis le GetStringInfo est statique, on ne peut même pas accéder à la page de contrôle et il vous dit qu'une telle méthode doit être quelque part d'autre et pas dans la page.
  • Je comprends que c'est une mauvaise conception, cependant, comme c'est souvent le cas, je ne suis pas celui qui l'a conçue, je suis simplement en travaillant à l'intérieur de la façon dont il a été fait. Croyez-moi, je souhaite que je pourrais le refaire et de le faire correctement à ce point.

InformationsquelleAutor Delebrin | 2011-09-06