Mit spørgsmål er opstået på baggrund af de ovenstående spørgsmål. Bemærk dette omhandler .NET 1.1. Det består i følgende...
Jeg har lavet et input felt i min aspx side: <input id=test type=hidden value="<%=FTest%>" name=test runat=server> Den værdi sættes på en side (jeg kan se den har en værdi når jeg submitter/poster til side 2)
På side 2 forsøger jeg protected System.Web.UI.HtmlControls.HtmlInputHidden test; ... string strTest = test.Value
og får en "NullReferenceException: Object reference not set to an instance of an object", hvorfor kan jeg ikke få fat i mit hidden input fra min postede form på den nye side?
Det er samme problematik som med viewstate - det der er på EEN side på klienten har intet med en ANDEN side at gøre. Det du vil gemme skal du gøre serverside, eller session/cookie/db :)
skulle jeg ikke kunne tage fat i værdien af den form der bliver posted og så sætte mine variable på den nye side? ellers kan post da være lige gyldigt... så kan man jo heller ikke i gammeldags html overføre via hidden input og det går da mig bekendt udmærket
men tror problemet du har bliver svært, at gætte da du nok bare gør et eller andet forkert et sted - hvor er svært at side da vi ikke kan se hvad du har lavet:)
hmmmm... jeg er nødt til at håndkopiere koden, men ved ikke om jeg kan finde mere der kan belyse yderligere... ser dog ud til at "" i input tag'et får den til at gå i spunk...
du kan da sagtens få fat i værdien, men du bliver nødt til at tænke lidt på hvad der er hvad.
Din nye side kender intet til KONTROLLER på den gamle. Den eneste måde du kan få fat i værdierne fra den gamle er via det som bliver postet, og dette er så tilgængeligt i Request objektet og ikke andre steder
Jeg er sikker på problemet ligger i det område, men har pt. ikke fået fat i den rigtige værdi og lige nu driller page_load på første side (samme fejl), fordi jeg lige skal finde en passende default for hvis value ikke er sat...
og hvis dit hiddenfield har runat=server, så bliver dens ID lavet om på klienten For at teste kan du kigge i source koden på klienten for at se hvordan feltet hedder, og så hardkode det navn i din request.form, blot til at starte med.
De skal bare erklæres i codebehind - det er så du kan "se" dem der... det er som sagt lidt primitivt i 1.1 hvor man altså nærmest skal erklære dem i markup koden og så også i codebehind hvis man skal arbejde med dem der.
i 2.0 er det kun muligt at erklære dem ét sted hvilket også givet mest mening.
men de er initialiseret hvis du dem i din markup kode også;)
hvis du har test = new HtmlInputHidden() i din kode, så er det jo en kontrol som er dynamisk tilføjet i code-behind, og du husker at gendanne den senest on page load når du laver postback ?
jeg er nødt til at lave en new på de controls ellers er det ikke et initialiseret objekt... (ser det ud til i .NET 1.1)
Mit problem lige nu er at når jeg forsøger at læse værdien af min variabel på side 2 (kommer til siden via response.redirect), så er min værdi tom (jeg forsøger at læse den med Request.Form["test"]), selvom jeg lige før siden går fra side 1 til 2 via view source, kan se at den har en værdi. Kan det være min response redirect der ikke submitter formen eller sådan noget og i så fald hvordan får jeg den overbevist?
nb, jeg laver kun new, hvis den kontrol der spørges til er null, ellers læser jeg den og hvis den er tom (string.Empty) forsøger jeg at læse fra form, men det er så her snoren knækker
Uddybning: Response.Redirect giver ikke en post af side1. Det er en ren server-side ting. Derfor skal du selv sætte værdien på Redirect-URL'en, som kalp skriver.
Overall : det er svært at gætte hvad dine krav er, fordi disse ikke er specificeret, og du ikke af dig selv giver feedback på de kommentarer som kommer (duer/duer ikke, og i så fald hvorfor duer det ikke), og det gør livet svært for dem som forsøger at hjælpe dig.
måske er url det bedste i den her sammenhæng, men der er temmelig meget jeg skal skrive om i hele applikationen i så fald og ja, kalde det bare dovenskab, men det har jeg forsøgt at undgå...
Hvis det er noget som forekommer på mange sider, og eksempelvis kan pløkkes ind i pageload, så kunne du f.eks. lave en ny BasePage klasse, med en moddet PageLoad, som kunne plukke værdien ud af urlen og lægge den ind i det felt som der nu formentligt allerede er. Så skulle der, igen formentligt, kun ændres fra hvilken klasse den pågældende aspx side nedarver.
det ville være ret bøvlet, jeg har postet dele af det, men der er meget "støj" og jeg skal kopiere det i hånden, da jeg ikke har adgang til at benytte dette forum fra den maskine der udvikles på...
Pt. arbejder jeg på url løsningen, for at se om jeg kan få siderne til at lade være med at gå ned undervejs... der går lidt tid inden jeg har noget respons på det.
tror url-metoden vil virke... jeg er næsten ok på side 2 (den loader ikke rigtigt endnu, men der mangler også modifikationer i forhold til den nye måde at læse værdierne på). Jeg havde problemer et øjeblik med at en post back (selected index changed) postede formen og dermed ikke fik mine url parametre med.
Du har ret, i dette tilfælde skulle det ikke give problemer, derfor fortsætter jeg også ad denne vej... :o) Jeg har 7-8 variable, hvor de længste er guids.
Jeg er nu kommet "vel" ind på side 2 og mine problmer nu er begrænset til opdatering til at benytte url på alle sider (det er en wizard) og lige få den til at opføre sig pænt, når jeg navigerer baglæns.
Læg endelig svar, der har været mange gode og hjælpsomme forslag undervejs og jeg har lært et par tricks jeg ikke kendte før:oD
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.