webForumDet fria alternativet

Kolla Värde i en Querystring

.NET

7 svar · 409 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Frågan#1

Tjenare.

Jag får in värden i en querystring. Typ av denna variant
*.aspx?parent=2
*.aspx?parent=2,3
*.aspx?parent=2,3,55

Sedan har jag ett värde kanske 3, Hur kollar jag smidigast om just mitt värde finns i min querystring.

Jag har kollat lite på IndexOf men jag får det inte riktigt att fungera....

nån som kan hjälpa mig på traven?

mv icaaq

Medlem sedan dec. 20003 563 inlägg
#2
Dim qInt as string() = split(request.querystring("parent"), ",")
Dim i as integer
dim myValue as integer = 3

for i = lbound(qInt) to ubound(qInt)
 if qInt(i) = myValue then
  ' Hittat
  exit for
 end if
next
Medlem sedan sep. 20011 914 inlägg
#3
if(Request.Querystring("parent").ToString().IndexOf("3") != -1)
   Response.Write("Ladies and gentlemen, we got a three");
Medlem sedan maj 20021 466 inlägg
#4

Dinos förslag tar inte hänsyn till att tal som innehåller 3. Dessutom behövs inte ToString eftersom QueryString betyder just frågesträng (och inte frågenummer).

cyprys kod skulle fungera om "," angavs som delimiter. Dessutom fungerar For Each bra istället.

Medlem sedan dec. 20003 563 inlägg
#5

Marcus E skrev:

cyprys kod skulle fungera om "," angavs som delimiter. Dessutom fungerar For Each bra istället.

Självklart var det min tanke. Redigerat. :)

Medlem sedan okt. 20005 273 inlägg
#6

Nu vill jag tabort värdet i min string[] men jag får det inte att fungera :(

Jag tar det från början.

1. Jag sätter värdet på en string [] qInt här:

[red]
	public class menu : System.Web.UI.UserControl
	{
		public string[] qInt = getQuery();
		public Table menuTable = new Table();
..
..
[/red]

och getQuery ser ut så här:

[red]
		private static string[] getQuery()
		{
			string[] tempqInt;
			if(HttpContext.Current.Request.QueryString["parent"] != null)
			{
				tempqInt = HttpContext.Current.Request.QueryString["parent"].Split(new char[] {','});
			}
			else
			{
				tempqInt = "".Split(new char[] {','});
				
			}
			return tempqInt;
		}
[/red]

Denna ska nog finslipas lite......

2. Nu vill jag i nedanstående kodsnutt tabort ett värde som jag skickar in i funktionen.

[red]
		private bool CheckArray(int myParent)
		{
			bool found = false;
			System.Text.StringBuilder newArray = new System.Text.StringBuilder();
			Debug.WriteLine("????????????????");
			Debug.WriteLine("qInt har innan körningen= "+ qInt.Length);
			for( int i = 0; i < this.qInt.Length; i++)
			{
				
				Debug.WriteLine(myParent.ToString() +"=="+ qInt[i]);
				
				if( qInt[i] == myParent.ToString())
				{						
					//if(newArray.Length > 0) newArray.Append(',');
					//newArray.Append
					found = true;
				}
				else
				{
					if(newArray.Length > 0) newArray.Append(',');
					newArray.Append(qInt[i]);
				}
			}				
			qInt = newArray.ToString().Split(new char[] {','});
			Debug.WriteLine("qInt har efter körningen= "+ qInt.Length);
			Debug.WriteLine(found);
			Debug.WriteLine("????????????????");
			return found;
		}
[/red]

Men värdet i qInt försvinner inte utan det finns där igen när jag kör funktionen......Jag kallar alltså på checkArray i en loop...

vad har jag gjort för fel?

mv icaaq

Medlem sedan okt. 20005 273 inlägg
#7

Kan jag inte ändra qInt´s värden på detta sätt?

mv icaaq

Medlem sedan sep. 20011 914 inlägg
#8
public class menu : System.Web.UI.UserControl
{
        StringCollection sc = new StringCollection();

        private void Page_Load(object sender, System.EventArgs e)
        {
            if(!IsPostBack)
              Grr();
        }

        private void Grr()
        {
            sc.AddRange("1,34,23,12,4".Split(new char[] {','}));
            bool a = CheckArray(34);
        }

        private bool CheckArray(int myParent)
        {
            bool found = false;
            string temp = null;
            foreach(string s in sc)
            {
                if(s == myParent.ToString())
                {
                    temp = s;
                    found = true;
                }
            }

            sc.Remove(temp);
            return found;
        }
}
268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)