我想将复杂的信息传递给控件。相当于整个XML文档。完成这样的事情的最佳方法是什么:
<MyPrefix:MyControl runat="server">
<Actions>
<Action Name="Value" SomeParam="SomeValue" AnotherParam="AnotherValue"/>
<Action Name="Value"/>
</Action>
</MyPrefix:MyControl>
我可以将“Actions”属性作为字符串,然后将其内容包装在根标记中并将其解析为XML吗?
有关最佳做法的指导吗?
答案 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
之类的属性,并在需要时阅读相关文件。