Avatar billede lizardine Nybegynder
14. april 2003 - 20:42 Der er 2 kommentarer og
1 løsning

HTTP Get Request

Hey

Jeg forsøger at kalde et HTTP Get Request - men af en eller anden årsag kan jeg ikke rigtig få det til at virke.

Jeg har en Server Control som generere et HTML output. I denne kalder jeg en metode der efter hensigten skulle retunere en Querystring - men det gør den desværre ikke.

Metoden der indeholder min Querystring ser således ud:

public class ClassQueryString : System.Web.UI.Page
{
    private int RequestID;

    public int GetRequestID()
    {
          return RequestID;
    }   

    public void SetRequestID()
    {
          try
          {
              RequestID = Int16.Parse(Request.QueryString["RequestID"]);
          }
          catch (exception)
          {
              RequestID = 0
          }
    }
}

Min Server Control ser således ud:

protected override void Render(HtmlTextWriter ServerControl)
{
    ClassQueryString oQueryString = new ClassQueryString();

    oQueryString.SetRequestID();

    Response.Write(oQueryString.GetRequestID)
}

Dette virker ikke og jeg udskriver tallet 0. Hvis jeg derimod requester RequestID i min server control vil den gerne hente min request. f.eks.

protected override void Render(HtmlTextWriter ServerControl)
{
    Response.Write(Int16.Parse(Request.QueryString["RequestID"]))
}

Hvad pokker gør jeg galt ???
Avatar billede z42cool Nybegynder
15. april 2003 - 07:41 #1
Din klasse ClassQueryString arver klassen Page og har derfor sin egen HttpRequest og derfor også sin egen QueryString. Da du i din server kontrol instanterer ClassQueryString så er det en forkert HttpRequest du arbejder med. Enten skal du flytte GetRequestID og SetRequestId til din CodeBehind fil så det er metoder på den Page kontrollern optræder i, ellers kan du:

public class ClassQueryString
{
    private System.Web.UI.Page page;

    public int GetRequestID()
    {
          return RequestID;
    }   

    public void SetRequestID()
    {
          try
          {
              RequestID = Int16.Parse(this.page.Request.QueryString["RequestID"]);
          }
          catch (exception)
          {
              RequestID = 0
          }
    }

    public ClassQueryString(System.Web.UI.Page page)
    {
      this.page = page;
    }
}

protected override void Render(HtmlTextWriter ServerControl)
{
    ClassQueryString oQueryString = new ClassQueryString(this.Page);

    oQueryString.SetRequestID();

    Response.Write(oQueryString.GetRequestID)
}
Avatar billede z42cool Nybegynder
15. april 2003 - 07:43 #2
I øvrigt kan ClassQueryString passende anvende properties og du får så en mere naturlig syntaks:

public class ClassQueryString
{
    private System.Web.UI.Page page;

    public int RequestID
    {
      get
      {
          int id;
          try
          {
              id = Int16.Parse(this.page.Request.QueryString["RequestID"]);
          }
          catch (exception)
          {
              id = 0;
          }
          return id;
      }
    }

    public ClassQueryString(System.Web.UI.Page page)
    {
      this.page = page;
    }
}

protected override void Render(HtmlTextWriter ServerControl)
{
    ClassQueryString oQueryString = new ClassQueryString(this.Page);
    Response.Write(oQueryString.RequestID)
}
Avatar billede lizardine Nybegynder
16. april 2003 - 10:44 #3
z42cool >> Tusind tak for eksemplerne :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester