ASP.NETでTimerコントロールを使用したい
ASP.NETWebアプリケーションについての質問です。
ajaxのTimerコントロールでイベントを発生させ、画面の再描画をしようとしています。
コードは以下のような感じで、OnPreRenderイベント内で描画処理を行います。
Partial Public Class _Default
Inherits System.Web.UI.Page
Private str As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
str = CStr(Date.Now)
End Sub
Protected Overrides Sub OnPreRender( _
ByVal e As System.EventArgs _
)
Label1.Text = str
End Sub
End Class
Timerコントロールを配置して実行したところ、
Script controls may not be registered before PreRender.
というエラーが出てしまいます。
調べてみたのですが原因がわかりません。
何かプロパティの設定などが必要なのでしょうか?
aspx のコードは以下のとおりです。
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication5._Default" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager>
<asp:Timer ID="Timer1"runat="server"></asp:Timer>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Labe>
l </form>
</body>
</html>
回答よろしくお願いいたします。
補足
ご回答ありがとうございます。 もう少し、疑問があるので、質問させてください。 確かにご指摘の通り、サーバーコントロールの方が HTMLで記述した時よりもXHTML 1.0の文法などを意識しなくても 良いような気がします。 でも、これだと、asp.netが入っている環境でのみしか 利用できないんですね。例えば、特定のページだけHTML で作成するという時に、VSだとDreamweaver等よりもかなり 非効率になってしまうのですね。 こういう部分というのは割り切ってしまって良いものでしょうか? asp.netで作ったものを、将来的に他の環境に対応させる時 (そういう必要が生じるかは別として)作り直しになってしまうの では?と思うのですが。 お手数ですが、ご意見お願いします。