ブラウザからの入力を受け取って、その文字列を表示させてみます。
HTML、HTMLコントロール、Webコントロールを利用する場合をそれぞれ対比させてみましょう。
HTMLを利用するサンプル
-------------------------------------------------------
<%@ Page language="c#" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
Label1.Text = Request.Form["intxt"];
}
</script>
<html>
<body>
<form method="post">
<input type="text" name="intxt" /><br />
</form>
<asp:Label id="Label1" runat="server" /><br />
</body>
</html>
-------------------------------------------------------
HTMLコントロールを利用するサンプル
-------------------------------------------------------
<%@ Page language="c#" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
Label1.Text = Request.Form["intxt"];
Label2.Text = intxt.Value;
}
</script>
<html>
<body>
<form method="post" runat="server">
<input type="text" id="intxt" runat="server"/><br />
</form>
<asp:Label id="Label1" runat="server" /><br />
<asp:Label id="Label2" runat="server" /><br />
</body>
</html>
-------------------------------------------------------
Webコントロールを利用するサンプル
-------------------------------------------------------
<%@ Page language="c#" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
Label1.Text = Request.Form["intxt"];
Label2.Text = intxt.Text;
}
</script>
<html>
<body>
<form method="post" runat="server">
<asp:Textbox id="intxt" runat="server"/><br />
</form>
<asp:Label id="Label1" runat="server" /><br />
<asp:Label id="Label2" runat="server" /><br />
</body>
</html>
-------------------------------------------------------
HTMLを利用する場合、入力したデータは表示の際には消えてしまいます。
コントロールを利用すると、表示の際にも入力したデータが残っているのが動作上の大きな違いですね。
なお、コントロールを利用する時は、formタグもサーバコントロールにする必要があります。
Request.Formはどのパターンでも利用できます。
生成されるHTMLを確認すれば、これはできて当然だということがわかるでしょう。
HTMLコントロールとWebコントロールはデータの取り出し方がちょっと違っている点に注意が必要ですね。
追記:
Ver1.1ではHTMLを利用するサンプルは動作しないようです。
追記2:
Ver1.1ではHTMLを利用するサンプルはid属性ではなくname属性を利用する必要がありました。
上記は修正ずみです。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)