asp コントロールを使用せずに動的な HTML レイアウトを作成したい。実際には、最初の行のみをaspxページに残したい
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Kletka._Default" %>
コードビハインドで完全なHTMLレイアウトを生成します。これを実装する方法を教えてください。
1つの方法はこれです:
protected void Page_Load(object sender, EventArgs e)
{
string coolHTML = @"<div class=""someclass"">... and other cool content</div>";
Response.Write(coolHTML);
}
とは言うものの。これはひどい考えです。コード ビハインドで HTML を動的に構築することは維持するのに悪夢です。最高のパフォーマンスが得られず、asp.net が提供する他の多くの機能が失われます。これが、そもそも ASP.NET を使用する主な理由です。
できることは、特定のもの (フッター、ヘッダー、左パネルなど) のユーザー コントロールを作成し、マークアップでそれらのレイアウトを定義することです。コード ビハインドでは、ビジネス条件に応じて、ページ内の特定のプレース ホルダーにそれらを追加できます。
マスター ページ (またはページ内に少なくともいくつかのコンテンツ プレース ホルダー) があるとします。
<asp:ContentPlaceHolder id="footer" runat="Server" />
コードビハインドでは、次のことができます。
footer.Controls.Add(new FooterControl());
コメントで、彼がasp.netコントロールが好きではないというOPの更新...
ASP.NET コントロールを使用する必要はありませんrunat="server"
。サーバー側でプロパティを操作できるようにする必要がある場合は、通常の HTML コントロールを使用して属性を設定できます。例えば:
<div id="mydiv" runat="server" > some content </div>
コードビハインドについて:
myDiv.Attributes.Add("class","css_class");
myDiv.Attributes.Add("onclick","callJavascriptFunction();");
// and so on.
非常に特殊な状況下では、この種のことをときどき行うことは問題ありませんが、保守が難しいため、この種のコードは避けたいと思います。myDiv
たとえば、要素に別のクラスを追加する必要があるとします。ここで、マークアップを変更するだけでなく、コードを変更する必要があります...
それで...GridViewなどの組み込みコントロールをまったく使用せずにASP.NETWebフォームを使用したいですか?
HTMLを記述して、保護されたプロパティを使用できますか?<%= SomeWhereText%?
または、コードビハインドで完全なhtmlレイアウトを作成してプロパティを作成する
protected string MyEntirePage {get;set;}
コードビハインドで文字列を作成します
MyEntirePage="<h1>Hello</h1><p>body here</p><p>the end</p>";
そしてそれをaspxページに書き出す
<%=MyEntirePage%>
Re:「私はあなたの主張を理解していますが、私はasp.netコントロールが本当に好きではありません。htmlコントロールを使用してjsでカスタマイズしたいと思います。」
NancyFxまたはおそらく古い(しかしまだ素晴らしい)WCF Web Apiをインストールし、KnockoutJs、jQuery、Backboneなどを使用して、動的コンテンツのajax呼び出しを実行します=asp.netWebフォームはまったくありません。わーい。
Page_Init イベントでコントロールを動的に追加する必要があります。したがって、HTML を保持するコンテナーが必要なため、最初に Panel を Page に追加する必要があります。その後、ページのコントロールが Panel に追加されます。
Panel pnl = new Panel();
Page.Controls.Add(pnl);
TextBox txt = new TextBox();
pnl.Controls.Add(txt);
等....