動的生成Asp.Netフロントhtml表示

1957 ワード

今日msnでaspを使うと言われました.Netはウェブサイトを作ってコントロールを使いたくないので、私はとてもおかしいです.引き続き検討すると、フロントエンドのページのコントロールの数は実行時に決定されることが分かったが、彼はそれらのコントロールがページにドラッグするしかないと思っていた.考えてみると、フロントエンドページでコントロールを動的に生成する方法を書く必要があると思います.牛たちは行ってもいいです.これは知らない兄弟たちに大まかなことを言うことです.フロントエンドコードではdiv,spanのようなラベルだけで形成されたレイアウト階層を見ることができる.実は、楽屋で、.Netも私たちにコントロール階層を作ってくれました.抽象的な言い方ですが、次の例を見てみましょう. <div id="div1" runat="server">
<div id="subdiv1">
......
</div>
<div id="subdiv2">
.....
</div>
<div>

上のコードでは、3つのdivが形成したレイアウト階層関係を示しています.div 1には2つのサブdivが含まれており、このようなレイアウトを固定するしかないように見えます.実は楽屋で、Netはdiv 1のために制御容器を作って、この容器の中で2つのdivを加えて、私たちはバックグラウンドで容器の中を見つけて彼らを見つけて処理することができます.この制御容器には階層化の概念もあり,div 1の制御容器にはsubdiv 1,subdiv 2,2つのサブdivにも独自の制御容器が含まれている.すべてのブロックレベル要素に対して、自分の制御容器に属する(ブロックレベル要素と行内レベル要素の概念については、自分でインターネットで探すことができ、htmlの概念に属する).この制御容器は、バックグラウンドでthisを通過することができます.Controlsが取得しました.次に、データベースからデータを動的に読み出してナビゲーションバーを生成する方法を示す例を示します.このナビゲーションバーは、シーケンステーブルなしで実現します(ナビゲーションバーになってhtmlの内容を自分で参照する方法).まず、フロントエンドコードを見てみましょう.<div>
<ul id="ul" runat="server">
</ul>
</div>

フロントエンドのコードは非常に簡単で、無秩序なリストのラベル
    が付いているだけですが、このリストがサーバ側で実行されていることを宣言する必要があります.そうしないと.Netはその制御階層を維持しません.バックグラウンドで彼を制御することはできません.バックグラウンドコードがどのようにリスト要素を動的に追加するかを見てみましょう.DataTable t = new DataTable();
    da.Fill(t);
    foreach (DataRow row in t.Rows)
    {
    Label label = new Label();
    label.Text = row["room_type"].ToString();
    ul.Controls.Add(new LiteralControl("<li>"));
    ul.Controls.Add(label);
    ul.Controls.Add(new LiteralControl("</li>"));
    }

    バックグラウンドのコードを見るのも簡単で、まずデータベースからナビゲーションバーの内容として必要なテーブルを抽出します.表の各要素について、ナビゲーションバーに表示する必要がある内容を静的テキストボックスに書き込み、無秩序リスト制御コンテナの追加制御要素メソッドを呼び出すと、リスト項目を無秩序リストに追加できます.他のブロックレベル要素にコントロールを動的に追加する方法については、上記を参照してください.