Avatar billede dresen Nybegynder
16. april 2007 - 19:16 Der er 7 kommentarer

Wizard control ændrer id'et for de elementer den indeholder

Hej eksperter

Jeg arbejder med en wizard server control.

Som det fremgår af titlen, så undrer det mig, at de elementer der placeres i et wizard, får ændret deres id'er. Dette forekommer ved at id'et for den pågældende wizard, tilføjes til starten af elementets id, hvorefter der så tilføjes enten "_" eller "$".

Dette illustreres med nedenstående eksempel.

(koden før eksekvering)
<asp:WizardStep  runat="server" Title="Step 2">

  <div id="Div1" runat="server" >
      <input type="file" name="fileUpload1" /><br />
  </div>
                       
  <asp:Button ID="Button3" runat="server" Text="Button" />
     
</asp:WizardStep>

->
    Ender som
              -->

(Source fra browseren)
<div id="Wizard1_Div1">
    <input type="file" name="fileUpload1" />
</div>
                       
<input type="submit" name="Wizard1$Button3" value="Button" id="Wizard1_Button3" />
                       
På forhånd tak

/dresen
Avatar billede neoman Novice
16. april 2007 - 20:21 #1
Og hvad er dit spørgsmål ?

Jeg oplevede det samme ved brug af MultiView, hvor knapperne også fik et komposit navn, og det er åbenbart en ganske gratis feature:-)
Avatar billede dresen Nybegynder
16. april 2007 - 21:12 #2
Hehe... ja, hvad er mit spørgsmål? Det blev vist væk i forbindelse med at få koden til at fremstå læsbar.

Mit spørgsmål er; hvorfor ændres navnet, og hvilket formål tjener det?

Jeg er sikker på, at der findes en meget fornuftig grund til ovenstående feature, men har ikke kunnet finde info om det.

Som grøn web-udvikler, så virker det forvirrende at id'erne pludselig skifter navne. Det medfører jo blandt andet, at man er nødt til at finde ud de nye id'er ved at se kildekoden, for at kunne referere til dem i javascript.

Eller tager jeg fejl?

vh/ dresen
Avatar billede jokkejensen Novice
16. april 2007 - 21:17 #3
Det er for at asp.net kan genkende dem med det javascript den generere.

Lige som du kan have flere kontroller med samme id, i flere forskellige usercontrols..

så får de ID ud fra det "træ" de er loadet i.

Du kan i dit markup til JS bare hente deres id med <%= dinControl.ClientID %>

Det er ikke en go' ide at tage "vis kilde" og basere dit css/js på det, det generede ID fra asp.net kan ændre sig´.

/J
Avatar billede dresen Nybegynder
16. april 2007 - 21:27 #4
Hej jokkeJ

Tak for dit svar.

Jeg kunne heller ikke få det til at passe, at man skulle se kilden først og herefter referere til obskure navne. Det virkede besværligt og error prone.

Kender I til steder, hvor man kan læse mere om auto navngivning, og evt. brugen af *.clientID.

Smid et svar.

vh/ dresen



Det virkede alt for error prone
Avatar billede dresen Nybegynder
16. april 2007 - 21:39 #5
Ej hvor jeg roder!!

Kan tilsyneladende ikke håndtere at skulle skrive i så lille en textbox :)
Avatar billede jokkejensen Novice
16. april 2007 - 21:49 #6
http://blog.jagregory.com/pages/ServerControlIDs

Du skal selvfølgeligt være obs på at <%= control.ClientId %> vil fejle hvis kontrolen ikke er der.

/J
Avatar billede dresen Nybegynder
27. april 2007 - 17:43 #7
Til andre læsere af denne tråd, så kan følgende måske være behjælpeligt: http://www.odetocode.com/Articles/450.aspx

Hej JokkeJ.

Tak for hjælpen.

Smid et svar :]
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