这是一个简单的示例,我认为它说明了您要完成的工作。请注意,<script runat="server">
标签中的所有内容都可以放在代码隐藏中,我只是将它们全部放在一个文件中,以便于阅读。
由于您已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>
FWIW,虽然上面的代码工作正常,但我认为只在Page_Load
方法中设置属性,然后放弃<%# %>
在首页中更简洁。我觉得在代码隐藏中设置属性是更常见的方法,但显然选择取决于您。
此外,如果您有兴趣,AutoEventWireup="false"
可以在 MSDN上找到更多信息。查找标题为“当 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>