質問

使用する必要がないとき runat="server" asp.netで?

編集:すべての答えに感謝しますが、私は本当に考えていました runat="server" 内部 <asp: 鬼ごっこ。

役に立ちましたか?

解決

使用 runat=server 属性ASP.NETコントロールを使用している場合、および/またはCode-Behindのこれらのコントロールへのプログラムアクセスが必要です。

HTMLコントロールはこの属性を必要としません。 html要素がある場合は便利です <span> <div>, 、 また <table> Code-Behindでそれらにアクセスできるようにしたいとき。

<asp:Label runat="server" id="foo" />
<div runat="server" id="bar />
...
foo.Text = "Hello Label";
foo.Attributes["class"] = "baz";

他のヒント

使用する必要があります runat="server" サーバーコントロールとして解析したいコントロール。

で任意の要素 runat="server" ページのherのサーバーコントロールに解析されます。他のものはプレーンテキストとして処理され、入力されます LiteralControl ページ階層のコントロール。

例外は、実際の要素ではない要素ですが、たとえば別のサーバータグ内の特別なタグです。 ContentTemplate タグ。彼らは必要ありません runat="server" 含まれるコントロールがそれらを解析するためです。

サーバーサイドASP.NETにサーバー側の変数を当社に対してレンダリングしたくない場合。

一般的に言えば、レイアウト目的でのみ使用されるサーバー側EGでDOM要素を操作する必要がない場合は使用しません。

runat = "server"がなければ、HTMLコントロールサーバーサイドコントロールを作成する他の方法もありません。 runat = "client"を行うことができないため、奇妙なことのように見えます。

したがって、要約すると、ASP .NETコントロールをこれまでに除外することはできません。おそらく、ASP .NET Webフォームを作成した開発者のすべてのサーバーサイドコントロールを見つけるためのEasietと最もクリーンな方法でした。

ソース: http://mikeschinkel.com/blog/whyrunatserverforaspnetpart2/

タグrunat = "server"は、スクリプトブロック内に含まれるコードがサーバーで実行される(クライアントではなく)実行されることを示します。実行時に、ASP.NETは、このコードとページクラスのインスタンスを含むサーバー側オブジェクトを作成し、特定のタイプのインスタンスとしてページ内に定義されたコントロールを含む(system.web.ui.webcontrols.textbox、例えば)。このサーバー側のオブジェクトは、ユーザーリクエストで呼び出され、イベントに応じてコードを実行します。

ランタイムでコントロールを作成します

ランタイムに1つのラベルが必要です。その時間はrunat = "server"が必要ありません

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
   {
    Label  lblNew = new Label();
    lblNew.ID ="lblnew";
    lblNew.Text ="Test";
    }
}

このコードは、ページロードイベントでのランタイムでラベルを作成します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top