2009-10-24 68 views
0

我想將複雜的信息傳遞給控件。相當於整個XML文檔。什麼是完成這樣的事情最好的辦法:將複雜數據傳遞到ASP.Net控件的最佳方式是什麼?

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

我能不能有一個「操作」屬性爲一個字符串,然後再包其內容物在根標籤和解析爲XML?

這裏的最佳做法的任何指導?

回答

1

啊哈,得到了它

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

哇,很好地完成。實際上,我最終使用了每個映射到一個類的子控件,這實際上是非常光滑的。優秀作品。 – Deane 2009-10-26 13:15:51

0

您可以添加一個屬性,如XmlFileName,並在需要時讀取關聯的文件。

+0

沒有,因爲那時我管理一個單獨的文件中查找該控制具有不同則params的每個實例。 – Deane 2009-10-24 15:17:51

相關問題