webForumDet fria alternativet

Kommer fel i Request.QueryString

8 svar · 668 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

I "gamla" asp så kunde jag ju hämta Request.QueryString med:

sId=Request.QueryString("id")
sTables = request.form("tables")
sOrd = request.form("sSoeg")

Jag har letat runt och det jag har funnit är:

lbSok.Text = "Sökning på table:" + Request.QueryString.GetValues("id")(1);

Jag får följande fel:

Beskrivning: Ett fel uppstod vid kompilering av en resurs som är nödvändig för
 att utföra den aktuella begäran. Granska den specifika felinformationen 
nedan och gör nödvändiga ändringar i källkoden. 

Kompilatorfelmeddelande: CS0149: Ett metodnamn förväntas

Hur bör jag hämta informationen i querystringen?

@ndersMedlem sedan juni 200032 969 inlägg
#2
Request.QueryString["id"]

?

sawMedlem sedan mars 20011 880 inlägg
#3

Nja..
Jag får nog förklara lite närmare.
Jag har:

<asp:Label ID="lAlfaBetet" runat="server" Width="616px" Height="23px">
</asp:Label></div>
        <asp:TextBox id="sSoeg"  runat="server"></asp:TextBox>
	        <asp:DropDownList id="tables"  runat="server" Width="117px">
	            <asp:ListItem Value="Title">Titel</asp:ListItem>
	            <asp:ListItem Value="Writer">Författare</asp:ListItem>
	            <asp:ListItem Value="Music">Musik</asp:ListItem>
	        </asp:DropDownList>
	    <asp:Button id="Button1" runat="server" Width="85px" 
Text="Sök" onclick="Button1_Click"></asp:Button>

<iframe src="result.aspx" id="mitten" name="mitten" runat="server" 
width="550px" height="300px" frameBorder="0"></iframe>

För att föra över information till iframen så under Button1_Click:

string sText = sSoeg.Text;
string sTables = tables.SelectedValue;
HtmlGenericControl ctl = (HtmlGenericControl)Page.FindControl("mitten");
ctl.Attributes["Src"] = "result.aspx?sText=" + sText + "+opt=" + sTables;

..och igenteligen så fungerar det någolunda.
Att få tag på id helt ok.
Nar jag skall ha tag på sText så visas det som
"Sökning på sText: elvis opt=Title".
Jag hadde hoppas på att slippa ifrån en massa split osv, några tips???

mozillaMedlem sedan juli 20011 084 inlägg
#4

Ja, det är ju för att du skapar en felaktig url.

ctl.Attributes["Src"] = "result.aspx?sText=" + sText + "[b]&amp;[/b]opt=" + sTables;

Men hela lösningen verkar inte speciellt bra, det är ju dumt att hålla på och bolla med querystrings i ASP.NET när det finns mycket bättre och roligare saker att leka med ;)

sawMedlem sedan mars 20011 880 inlägg
#5

Mitt problem är följande.
Högst upp, så har ja ett antal länkar, en för varje bokstav i alfabetet.
Därefter en sökruta och en listbox.
Dessa värden skall tas imot i en iFrame. Jag har idag (och bättre nu tack vare
dig) en fungerande lösning, men kan du föreslå någonting bättre så är jag lyhörd.

[REDIGERAT
Jag testade just nu din kod men med problem:

ctl.Attributes["Src"] = "result.aspx?sText=" + sText + "&amp;opt=" + sTables;
'sen kollar jag
lbSok.Text = "Sökning på :" + Request.QueryString["opt"];

Det var inga problem att få fram sText, men på opt så får jag ingenting.

tohaMedlem sedan dec. 1999707 inlägg
#6

ctl.Attributes["Src"] = "result.aspx?sText=" + System.Web.HttpUtility.URLEncode(sText) + "&opt=" + System.Web.HttpUtility.URLEncode(sTables);

mozillaMedlem sedan juli 20011 084 inlägg
#7

eller kanske lite snyggare

ctl.Attributes["Src"] = String.Format("result.aspx?sText={0}&opt={1}",
    System.Web.HttpUtility.URLEncode(sText),
    System.Web.HttpUtility.URLEncode(sTables));

Men som jag sa tidigare så hade jag nog hellre valt en annan typ av lösning. Gillar inte iframes överhuvudtaget :OO

sawMedlem sedan mars 20011 880 inlägg
#8

Nu fungerar det, men jag har fortfarande problem med att använda querystringen.

sokId = Request.QueryString["Id"];
sokOrd = Request.QueryString["sText"];
sokTable = Request.QueryString["opt"];
'sokId  får jag fram genom att jag har plockat fram alfabetet, och gjort varje
bokstav som länk.
'i page_load
sokId = "";
sokOrd = "";
sokTable = "";
'sen i classen
sokId = Request.QueryString["Id"];
sokOrd = Request.QueryString["sText"];
sokTable = Request.QueryString["opt"];
'kolla om det finns någonting, här smäller det
if (sokId.Length > 0)

Då kommer det upp en "otäck" ruta som säger
"use the "new" keyword to create an objectinstance".
Det kvittar hur jag än har gjort, så får jag ett error.
Om jag lägger in det i en try catch så körs inte if-satsen, jag hinner inte
ens göra en sökning för att "fylla" querystringen.

sawMedlem sedan mars 20011 880 inlägg
#9

Ingen som vet?

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)