[ASP.Net C#] Registered script block & meerdere usercontrols

Pagina: 1
Acties:

Onderwerpen


  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 16-06 15:55

SideShow

Administrator

Topicstarter
Hallo

Ik heb een usercontrol die enkele clientside scripts heeft.

De centrale functies worden natuurlijk met een simpele check maar 1 keer in de .aspx pagina geregistreerd.
Maar nu komt het: iedere control op de pagina (de control kan natuurlijk meerdere keren gebruikt worden per pagina) heeft ook een javascript object met wat info erin, specifiek voor die control-instantie.

In praktijk ziet het er ongeveer zo uit in de gerenderde pagina:

Eén maal een centraal scriptblock met de generieke functies. De functies gebruiken de settings in "config".

<script>
blabla = { config: { }, function1: funtion() { ... }, function2: function() { ... }, .............. }
</script>

en dan per control:

<script>
blabla.config['controlID'] = { ............. }
</script>


Bij 1 control van dit type valt het natuurlijk mee, maar als je er 5 hebt, ziet de broncode er natuurlijk niet uit. "Erg" is dat natuurlijk niet, maar ik zou liefst gewoon alle control configuraties in het initiële scriptblock steken, en me dan ook beperken tot 1 scriptblock alltogether..

Ik ben er nog niet helemaal uit als dit eigenlijk wel mogelijk is.

Hulp is welkom!

Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Wat je kunt doen is in de usercontrol klasse een Dictionary<string, string> gebruiken waarin je de properties vastlegt. Dan maak je een methode die o.b.v. de dictionary een stukje javascript genereert. Je kunt misschien zelfs wel een JSON Serializer gebruiken.

Een andere optie is om het Ajax client framework te gebruiken om een clientside Control of Component te maken maar dat is wel wat complexer en misschien wat over the top.

Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 16-06 15:55

SideShow

Administrator

Topicstarter
Ik begrijp je niet waarschijnlijk. Eigenlijk wil ik asp.netajax/telerik/noem maar op vermijden; gewoon lekker zelf mijn gang gaan met jquery ajax en een json handler op de server.

Daarvoor heb ik dus een usercontrol, met logischer wijs properties ... maar ik begrijp niet wat het gebruik van een dictionary zal veranderen aan het feit dat ik per control een apart scriptblock heb met speciefieke instellingen van de control.

(de control is dus een soort client-side json parser, die een UI lijst/grid maakt van een jsonstring, die komt van de handler)

[ Voor 16% gewijzigd door SideShow op 17-12-2011 14:02 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Als je dat script in je codebehind registreert via Page.ClientScriptManager wordt het automagisch voor je geregeld.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Als je zelf dicht op het metaal aan het programmeren gaat, waarom kies je dan überhaupt voor alle onzinnige abstracties die WebForms aan je opdringt? Neem dan ASP.NET MVC, wat daar veel beter bij past.

Trap verder niet in de val om je client-side JavaScript implementatie te koppelen aan een monolitische server-side 'control' implementatie. Dat levert alleen maar problemen op. De client-side implementatie moet je los zien van de server-side implementatie. Het zijn twee losse 'applicaties' (client en server) die enkel met elkaar communiceren.

[ Voor 46% gewijzigd door R4gnax op 18-12-2011 11:52 ]