0

asp コントロールを使用せずに動的な HTML レイアウトを作成したい。実際には、最初の行のみをaspxページに残したい

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Kletka._Default" %>

コードビハインドで完全なHTMLレイアウトを生成します。これを実装する方法を教えてください。

4

3 に答える 3

1

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たとえば、要素に別のクラスを追加する必要があるとします。ここで、マークアップを変更するだけでなく、コードを変更する必要があります...

于 2012-08-08T16:42:08.460 に答える
0

それで...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フォームはまったくありません。わーい。

于 2012-08-08T16:47:12.260 に答える
0

Page_Init イベントでコントロールを動的に追加する必要があります。したがって、HTML を保持するコンテナーが必要なため、最初に Panel を Page に追加する必要があります。その後、ページのコントロールが Panel に追加されます。

Panel pnl = new Panel();
Page.Controls.Add(pnl);


TextBox txt = new TextBox();
pnl.Controls.Add(txt);

等....

于 2012-08-08T16:41:47.847 に答える