2009-10-24 4 views
0

Je souhaite transmettre des informations complexes dans un contrôle. L'équivalent d'un document XML entier. Quelle serait la meilleure façon d'accomplir quelque chose comme ceci:Quel est le meilleur moyen de transmettre des données complexes dans un contrôle ASP.Net?

<MyPrefix:MyControl runat="server"> 
    <Actions> 
    <Action Name="Value" SomeParam="SomeValue" AnotherParam="AnotherValue"/> 
    <Action Name="Value"/> 
    </Action> 
</MyPrefix:MyControl> 

ce que je pourrais avoir juste une propriété « Actions » comme une chaîne, puis envelopper son contenu dans une balise racine et analyser comme XML?

Des conseils sur les meilleures pratiques ici?

Répondre

1

Aha, il a obtenu

using System.ComponentModel; 
using System.ComponentModel.Design; 
using System.Drawing.Design; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Xml.Linq; 

namespace Unknown 
{ 

    public class TestBuilder : ControlBuilder 
    { 

     public override bool AllowWhitespaceLiterals() 
     { 
      return false; 
     } 

     public override bool HtmlDecodeLiterals() 
     { 
      return true; 
     } 

    } 

    [ToolboxData("<{0}:Test runat=\"server\" />"), DefaultProperty("Actions"), ParseChildren(true, "Actions"), ControlBuilder(typeof(TestBuilder))] 
    public class Test : WebControl 
    { 

     [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty), Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))] 
     public string Actions { get; set; } 

     protected override void OnLoad(System.EventArgs e) 
     { 
      XDocument doc = XDocument.Parse("<Actions>" + this.Actions + "</Actions>"); 

      base.OnLoad(e); 
     } 

    } 

} 
+0

Wow, bien fait. En fait, j'ai fini par utiliser des contrôles enfants qui sont chacun mappés à une classe, c'est vraiment, vraiment lisse. Excellent travail. – Deane

0

Vous pouvez ajouter une propriété comme XmlFileName et lire le fichier associé lorsque vous le souhaitez.

+0

Non, parce que j'ai gérer un fichier distinct pour chaque instance de ce contrôle qui ont des params. – Deane

Questions connexes