- Og denne gang er der noget på højkant!

Vi må ta' et lille kig på dynamisk indsatte UserControl's, så lad os få kridtet banen op :o)

I forbindelse med en lille løsning du sidder og hygger dig med, har du lavet en mindre UserControl:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ExtraOptions.ascx.cs" Inherits="ExtraOptions" %> <!-- Diverse kontroller her -->

Med nedenstående kode:

public partial class ExtraOptions : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { // En masse kode der læser data, manipulerer kontroltræer og ændrer verden. } public void SetDefaultChoice(string choiceText) { // En eller anden implementering } }

Og du skynder dig at gå igang med at bruge den.

Nu hedder kontrollen jo ExtraOptions og skal være en tilføjelse på forskellige sider, i forskellige situationer, og du vælger en løsning, hvor den indsættes dynamisk, baseret på en parameter i QueryString, og laver på én af dine sider noget i denne stil:

public bool ShowExtraOptions { get { bool extraOptions = false; bool.TryParse(Request.QueryString["ExtraOptions"], out extraOptions); return extraOptions; } } protected void Page_Load(object sender, EventArgs e) { if (ShowExtraOptions) { // du loader kontrollen Control extraOptions = LoadControl("ExtraOptions.ascx"); // typecaster og kalder noget kontrolspecifikt ((ExtraOptions)extraOptions).SetDefaultChoice("Choice2"); // og tilføjen kontrollen til en placeholder UxDynamicControlContainer.Controls.Add(extraOptions); } }

Du fortsætter nu med andre ting, og er slet ikke opmærksom på at du netop har skrevet et stykke risikabelt kode, og samtidig påpeget en væsentlig uhendsigtmæssighed i ASP.NET!

Nu er spørgsmålet jo så:

Hvad er det du har gjort der ikke er godt nok, og hvad er det for en uhendsigtsmæssighed jeg snakker om?

Og som skrevet er der er denne gang en præmie at vinde, nemlig sådan en kop her:

"Uhh buhh - en tiger - den har vi da set før!!!"

Jahh - det har i jo sikkert, men den bliver naturligvis fyldt med nogle kaffebønner der er lidt ud over det sædvanlige, så nu har du muligheden for at smage kaffen du aldrig ville købe selv ;o)


Mvh