2013-11-20 14 views
7

結果の数に応じて3つの結果が得られ、それぞれの結果をラベルテキストに割り当てて、新しい改行ごとに新しいDivを設定したい。私はどのようにそれを行うのですか?C#、foreachループ中に新しいHTML Divを生成する方法は?

Collection<PSObject> output = pipeline.Invoke();はここに結果が格納されます。

ここ

サンプルC#のコード、

ここ
foreach(PSObject psObject in output) 
     { 
      Label ipLabel = new Label(); 
      ipLabel.Text = psObject + "\r\n"; 
      div1.Controls.Add(ipLabel); 
     } 

asp.netコード、

<div id="div1" runat="server"></div> 

私は右のラベルの結果を得たが、それはすべての1つのdiv行に表示の代わりに、すべてのは、新しいDIVライン。

+3


??? – Daniel

+1

'Repeater'コントロールは、あなたが探しているように聞こえる... – David

答えて

10

理想的には、マークアップの操作はとにかくあなたの.aspxファイル内ではなく、あなたの分離コードでデータバインディングを使用して行うが、する必要があります。

foreach(PSObject psObject in output) { 
    HtmlGenericControl div = new HtmlGenericControl("div"); 
    div.Controls.Add(new Label() { Text = psObject + "\r\n"; }); 
    div1.Controls.Add(div); 
} 

これは私がのaspxファイルでそれを行うだろうかです:

<div id="div1"> 
<% foreach(PSObject psObject in output) { %> 
    <div> 
    <%: psObject %> 
    </div> 
<% } //foreach %> 
</div> 

<%= Server.HtmlEncode(foo) %>に相当する<%: foo %>の使用に注意してください。

+0

ありがとう!これはうまくいきました – StudentIT

+0

foreach中にC#コードで新しいラベルIDをどのように追加しますか? – StudentIT

+0

@StudentIT "labels"はレンダリングされたHTMLには存在しません。他のマークアップには 'id =" "属性が適用されます。あなたが最終的に達成したいことを説明してください。 – Dai

1

"Panel"コントロールはので、多分あなたがそこにラベルをラップしたい、DIVを出力します

foreach(PSObject psObject in output) 
{ 
    Panel ipPanel = new Panel(); 
    Label ipLabel = new Label(); 
    ipLabel.Text = psObject; 
    ipPanel.Controls.Add(ipLabel); 
    div1.Controls.Add(ipPanel); 
} 

ます。また、ラベルの内側に「
」(HTMLのための改行、おおよそ)を入れることができます:

foreach(PSObject psObject in output) 
{ 
    Label ipLabel = new Label(); 
    ipLabel.Text = psObject + "<br/>"; 
    div1.Controls.Add(ipLabel); 
} 
+0

も機能しました – StudentIT

関連する問題