2009-03-10 14 views
1

フォーラムに投稿されたメッセージを表示するプログラムがあります。今、私は必要なHTMLを挿入するコードの背後にあるResponse.Writeメソッドを使用しています。しかし、私はむしろコードの背後にHTMLを置くことを避けたいと思います(これは、コード全体の背後にある/ .NETのデザイン分離機能ではないためです)。コンテンツプレースホルダを使用し、子コントロールを動的に挿入したいと考えています。しかし、私はそれらを横に並べて挿入するようにしか見えません。プレースホルダコントロールと子コントロールの調整

表の列1      表の列2
ユーザー名:[ユーザー名]      
[MessageSubject]
に投稿されました:[POSTDATE]
ユーザー評価私はこのようなものを持っていると思います:[UserRating]私は達成するように見えることができる唯一のことは、

しかし、次のとおりです。

ユーザー名:[ユーザー名]投稿日:[POSTDATE] U ser Rating [UserRating] [MessageSubject]、リンクや書式なし。

段落、改行、フォームボタン、および通常のハイパーリンクをコンテンツプレースホルダに配置して、必要な方法で並べ替えるにはどうすればよいですか?

答えて

3

あなたはあなたと同じようなやり方をします。例えばaspxページ、:もちろん

<asp:Table runat="server"> 
    <asp:TableRow runat="server"> 
    <asp:TableCell runat="server"> 
     <asp:Label runat="server" Text="Username:" /> 
    </asp:TableCell> 
    <asp:TableCell runat="server"> 
     <asp:TextBox runat="server" ID="userNameTextBox" /> 
    </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

コードが賢いかもしれない、これはただの点を説明することです。

Table table = new Table(); 
TableRow row1 = new TableRow(); 
table.Rows.Add(row1); 
TableCell cell1 = new TableCell(); 
TableCell cell2 = new TableCell(); 
row1.Cells.Add(cell1); 
row1.Cells.Add(cell2); 
Label label1 = new Label(); 
label1.Text = "Username:"; 
cell1.Controls.Add(label1); 
TextBox textBox1 = new TextBox(); 
textBox1.ID = "userNameTextBox"; 
cell2.Controls.Add(textBox1); 
// and so on... 
myPlaceholder.Controls.Add(table); 

がに相当します。レイアウトを制御するために宣言的に構築できるコントロールの階層構造は、プログラム的にも可能です。

+0

これは最高の答えだと思います。コードの背後にASPテーブルコントロールを配置することは、その発疹以外のすべての私の問題を解決します。 。 。 –

+0

少しのハイドロコルチゾンは、発疹(または強いペニシリンの用量と書き直されたスタイルシート)を処理する必要があります。 – Traingamer

1

この概要をWeb Partsでお試しください。

いくつかは私と一緒に議論するか、私を否決が、テーブルではない場合があります。

<table> 
<tr><td>Table Column 1</td><td>Table Column 2</td></tr> 
<tr><td>Username:</td><td>[UserName]</td></tr> 
<tr><td></td><td><p>[MessageSubject]</td></tr> 
<tr><td>Posted On:</td><td>[PostDate]</td></tr> 
<tr><td>User Rating:</td><td>[UserRating]</td></tr> 
</table> 

これは、このようなものを生成します。以上簡単に、ちょうどUser Controls

0

あなたはこのような何かを行うことができます使用します悪い、それはあなたがそれを使う方法です。

+0

これは表形式のデータですか? –

+0

はい、行/グリッドの方法でデータを表示しています – Chris

+0

あなたは良い提案がありますか? – Chris

0

トム、私は基本的にあなたが試みているのとまったく同じパターンを実装しました。

重要な違いは、ASPXとコードビハインドの間ではなく、UIとビジネスロジックの間の区別です。実際、ASPXページのコードビハインドはであり、すべて適切なUI動作を保証するために約です。さらに悪いことに、これに関して純粋なままでいるという試みは、あなたが求めるデザインを実行することを妨げています。最終的には、レイアウトを動作させ、決して後悔していないように、コントロール間にスペースHTMLを配置することになりました。

ASPXとコードビハインドの区別に焦点を当てるのではなく、ビジネスロジックからUIコードを引き離すことに重点を置くことを強くお勧めします。これを行うには、ソリューションにクラスライブラリ(DLL)プロジェクトを追加し、DLLの参照をBINディレクトリに配置します。その後、ASPXページにDLLへの呼び出しを行い、ビジネスルールを実行し、データベースから情報を取得します。 は、ベストプラクティスの観点からは意味をなさない区別です。

0

私はこれをUserControlにすることはおそらく正しい方法だと思います。私は、次のようなHTMLを出力する提案する:

<div class="message"> 
    <div> 
     <span class="column1">Username:</span> 
     <span class="column2">[UserName]</span> 
    </div> 
    <div>[MessageSubject]</div> 
    <div> 
     <span class="column1">Posted On:</span> 
     <span class="column2">[PostedOn]</span> 
    </div> 
    <div> 
     <span class="column1">User Rating:</span> 
     <span class="column2">[UserRating]</span> 
    </div> 
</div> 

あなたは、その後のようなCSSを経由してスタイルを適用することができます

<style> 
    .message .column1 
    { 
     display: inline-block; 
     width: 150px; 
    } 
    .message .column2 
    { 
     display: inline-block; 
     width: 300px; 
    } 
</style> 

あなたは<div>タグは、一般的に行う方法」への答えであることがわかります私はこれを次の行に置いたのですか? "

編集:ウェブレイアウトを初めてご利用の方は、遅かれ早かれblueprintの方が早く発見されてもよいでしょう。