将复杂数据传递到ASP.Net控件的最佳方法是什么?

时间:2009-10-24 14:37:32

标签: asp.net xml controls

我想将复杂的信息传递给控件。相当于整个XML文档。完成这样的事情的最佳方法是什么:

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

我可以将“Actions”属性作为字符串,然后将其内容包装在根标记中并将其解析为XML吗?

有关最佳做法的指导吗?

2 个答案:

答案 0 :(得分: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);
        }

    }

}

答案 1 :(得分:0)

您可以添加XmlFileName之类的属性,并在需要时阅读相关文件。