2010-03-04 43 views
0

我有一套不錯的html,現在我需要在自定義控件呈現方法中使用RenderBeginTag,RenderEndTag類型的代碼。有沒有任何工具來轉換HTML C#代碼?如果我開始手動編寫這個代碼,那就太好了。如何將html轉換爲ASP.Net write.RenderBeginTag類型代碼

+0

嗨賈尼,WEL來堆棧溢出。你可以請你發佈一些代碼示例,試圖實現。 「轉換HTML C#代碼」是什麼意思? – Oded 2010-03-04 09:19:23

+0

喜俄德 我要轉換的東西像

Page title
到 writer.AddAttribute(HtmlTextWriterAttribute.Class, 「標題」); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(「Page Title」); writer.RenderEndTag(); – Jani 2010-03-04 09:48:48

回答

0

我不確定有沒有辦法做到這一點。我能找到的最接近的是this網站,它在Response.Write調用中生成HTML代碼。

0

當編寫定製WebControl類,你仍然可以使用標準的ASP.NET控件,避免需要使用標籤渲染方法:

[ToolboxData("<{0}:MyCustomControl runat=server></{0}:MyCustomControl>")] 
public class MyCustomControl : CompositeControl 
{ 
    public MyCustomControl() 
    { 

    } 

    public string Text 
    { 
     get 
     { 
      object o = ViewState["Text"]; 
      return ((o == null) ? "Set my text!" : (string)o); 
     } 
     set 
     { 
      ViewState["Text"] = value; 
     } 
    } 

    protected override void CreateChildControls() 
    { 
     // Create controls 
     var label = new Label(); 
     label.ID = "innerLabel"; 
     label.Text = this.Text; 

     // Add controls 
     this.Controls.Add(label); 

     // Call base method 
     base.CreateChildControls(); 
    } 
} 

或者你可以使用像這樣的渲染方法標籤:

[ToolboxData("<{0}:MyCustomControl runat=server></{0}:MyCustomControl>")] 
public class MyCustomControl : CompositeControl 
{ 
    public MyCustomControl() 
    { 

    } 

    public override void RenderControl(HtmlTextWriter writer) 
    { 
     base.RenderEndTag(writer); 

     if (!this.DesignMode) 
     { 
      var label = new Label(); 
      label.Text = "Hello!"; 
      label.RenderControl(writer); 
     } 
    } 
} 

希望這回答你的問題:■

+0

這導致相同的問題。我有10個不同的頁面佈局和幾百行HTML。而不是寫RenderTags,我將不得不編寫代碼,如 表t = new Table(); this.Control.Add(t); TableRow tr = new TableRow(); t.Rows.Add(tr); 它沒有讓我更接近我原來的目標。如果有人知道如何從html創建這種類型的代碼,也是一個不錯的選擇。 Jani – Jani 2010-03-04 09:42:05

+0

查看使用'CreateChildControls'的第一個代碼示例。 – Codesleuth 2010-03-04 09:53:52

0
[ToolboxData("<{0}:MyCustomControl runat=server></{0}:MyCustomControl>")] 
public class MyCustomControl : CompositeControl 
{ 
    public MyCustomControl() 
    { 

    } 

    public override void RenderControl(HtmlTextWriter writer) 
    { 
     base.RenderEndTag(writer); 

     if (!this.DesignMode) 
     { 
      var label = new Label(); 
      label.Text = "Hello!"; 
      label.RenderControl(writer); 
     } 
    } 
} 
+0

你剛剛複製並粘貼我的答案? – Codesleuth 2010-03-04 10:08:02