2009-10-24 4 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

0

XmlFileName과 같은 속성을 추가하고 원하는 경우 관련 파일을 읽을 수 있습니다. 나는 다른 PARAMS이이 컨트롤의 각 인스턴스에 대해 별도의 파일을 관리 할 수 ​​있기 때문에

+0

없음을 얻었다. – Deane

관련 문제