Jag har en funktion som dynamiskt genererar Textboxar. Men hur hämtar man ut de värden som användaren har matat in i textfälten?
Kan tillägga att jag kodar i C#.
I PHP så kan man komma åt alla element som har skickats genom att gå igenom en array. Troligen finns det en liknande array i ASP, som du kan gå igenom, förslagvis med for each x in thearray eller hur man nu gör det i ASP.
Varför du skall använda Request.Form.GetKey(i) är för att du skall kunna filtrera bort "EVENTTARGET" , "EVENTARGUMENT" och "VIEWSTATE" som ligger hidden i formuläret.
Sen kan det vara god ide att filtrera bort "Submit knappen" oxå.
Jag har en funktion som dynamiskt genererar Textboxar. Men hur hämtar man ut de värden som användaren har matat in i textfälten?
Kan tillägga att jag kodar i C#.
Aaahhh klassikt problem.
Man måste tänka till lite här. Man måste komma ihåg att alla websidor är "stateless" alltså de kan inte hålla någon som helst information mellan anropen (visst man kan använda sessions och annant trams, men som utgångs punkt så är de stateless). Det betyder att de kontroller som du har i din ASPX sida är de kontroller som du har när din kodebehind exekveras.
Vilket betyder att om du har en sida och när den sidan genereras så skapar du dynamiska kontroller, dessa kommer att visas på din HTMLsida precis som du vill, men när du gör en postback så kan du inte refererar till dem. Och det beror helt enkelt på att de kontrollerna inte finns.
Som tur för vår del så brukar information om dessa kontroller sparas i viewstaten så att du faktiskt kan återfå informationen om du bara återskapar kontrollerna. nu var det ett tag sedan som jag läste om det, men om man återskapar sina kontroller innan/i Page_Init() eventet så kommer .NET själv att para ihop rätt kontrol med rätt information. Så du behöver i princip bara skapa lika många textboxar med samma ID i din Page_Init() vid din postback och så skall du kunna komma åt information i textboxarana.
Ett annat sätt som vissats i tråden ovan är att host:a dina kontroller i en annan kontroll som finns med i din ASPX sida, och då med hjälp av den kontrollens viewstate så kan .NET själv återskapa dessa kontroller till dig. Repeatern är en sådan utmärkt kontroll.