0

asp.netのWebコントロールにテキストを追加する方法を見つけるのに助けが必要です。可能であれば最も単純なソリューションを探すか、それが単純な場合はコントロールビルダーを使用します。

WebControlによって生成されるHTMLの例:

<h3>Hello World</h3>

これまでの私の最善の試みの例:

WebControl wc = new WebControl(HtmlTextWriterTag.H3);
wc.????

以下に少なくとも2つのバージョンで回答しました。

  1. HtmlGenericControl...はvarvarh3_hgc = new HtmlGenericControl( "h3");で使用できます。h3_hgc.InnerText = "Hello World";

  2. WebControlから派生したLiteralControlLiteralControlhwLiteralControl = new LiteralControl( "Hello World"); wc.Controls.Add(hwLiteralControl);

4

2 に答える 2

6

見出しはサーバーのWebコントロールではなく、html要素です。動的に作成する必要がある場合:

var h3 = new HtmlGenericControl("h3");
h3.InnerHtml = "Hello World";
container.Controls.Add(h3);

container追加するコントロールはどこにありますか。

于 2012-11-19T15:31:39.630 に答える
2

リテラル文字列をページに配置するのが好きな方法は、リテラルタグを使用することです

Default.aspx:

<h1><asp:Literal ID="litHeader" runat="server" /></h1>

Default.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    litHeader.Text = "Hello World";
  }
}

リテラルコントロールを使用することで私が気に入っているのは、HTMLにレンダリングされる余分なマークアップがないことです。これは、画面に何かを表示したいときはいつでもうまく機能しますが、後で値を取得するためにそれを参照することはありません。

レンダリング方法:

<h1>Hello World</h1>

編集:

上記の例は、単純なデモアプローチです。画面に何かを出力するときは、クロスサイトスクリプティング攻撃から確実に保護する必要があります。ASP.Net Webフォームを使用しているので、MicrosoftからNuGetパッケージ「Antixss」を入手します。(Server.HtmlEncodeではなくAntixssのEncoder.HtmlEnocde()を使用します。理由はここにあります)

使用方法は次のとおりです。

Default.aspx.cs:

using Microsoft.Security.Application;

protected void Page_Load(object sender, EventArgs e)
{
  /* username is pulled from a datastore*/
  if (!IsPostBack)
  {
    litHeader.Text = Encoder.htmlEncode(username);
  }
}
于 2012-11-19T15:57:17.560 に答える