これは、あなたが達成しようとしていることを示していると私が思う簡単な例です。タグ内のすべてがコードビハインドに含まれる可能性があることに注意してください<script runat="server">
。読みやすくするために、ここではすべてを1つのファイルにまとめています。
AutoEventWireup
に設定したので、メソッドをオーバーライドしてイベントハンドラーを接続false
する必要があります。このメソッドでは、プロパティの値を任意に設定して(私はプロパティを使用しました)、サーバーコントロールを呼び出すだけです(この場合はコントロールを使用しました)。OnInit
Load
Page_Load
MyText
DataBind
Literal
<%@ Page Language="C#" AutoEventWireup="false" %>
<html>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="litText" Text="<%# MyText %>" runat="server" />
</div>
</form>
</body>
</html>
<script runat="server">
public string MyText { get; set; }
private void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
MyText = "some text to databind!";
litText.DataBind();
}
}
protected override void OnInit(EventArgs e)
{
Load += Page_Load;
base.OnInit(e);
}
</script>
Page_Load
FWIW、上記のコードは正常に機能しますが、メソッドにプロパティを設定<%# %>
して、フロントページのを省略した方がクリーンだと思います。コードビハインドでプロパティを設定するのがより一般的なアプローチだと思いますが、明らかに選択はあなた次第です。
また、興味がある場合は、MSDNで詳細をAutoEventWireup="false"
確認できます。「AutoEventWireup属性の値がfalseの場合」というタイトルのセクションを探します。
編集
静的プロパティも正常に機能します。Page.DataBind()
@nunespascalが提案したように使用した例を次に示します(これはで動作しlitText.DataBind()
ます)。
<%@ Page Language="C#" AutoEventWireup="false" %>
<html>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="litText" Text="<%# MyClass.StaticProp %>" runat="server" />
</div>
</form>
</body>
</html>
<script runat="server">
private void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
Page.DataBind();
}
protected override void OnInit(EventArgs e)
{
Load += Page_Load;
base.OnInit(e);
}
public class MyClass
{
public static string StaticProp { get { return "Static Property"; } }
}
</script>