2010-05-27 150 views
0

我使用下面的语法绑定到一个div元素:数据绑定到一个属性?

<div id="previewdiv"><%=Preview%></div> 

哪里预览是我的网页上的属性。

问题在于,我在一个onclick事件的新页面上使用JavaScript创建了它。在服务器端,我可以通过此属性引用新页面,但由于某种原因,当页面回发时,变量将被设置为默认的初始化值,而不是我在页面中设置的值,即预览=字符串。当我第二次回发时,页面将更新为我设置的值。

我也许可以将代码移动到Init,但我需要从控件获取值来初始化此属性。

想法?

回答

2

您遇到的问题是,在您的代码有机会运行之前,使用传统的ASP.NET Web窗体,<%= %>代码在页面生命周期的早期阶段就进行了评估。

相反,您想要使用ASP.NET Data Binding,它使用不同的语法,如下所示:<%# %>。 (注意“#”)。然后,要获得此代码进行渲染,当准备好用实际数据替换模板时,必须调用某个服务器端控件的DataBind()。

因此,在你的服务器代码,你做这样的事情:

Preview = someString; 
previewDiv.DataBind(); 

而在您的标记,像这样:

<div runat=server id="previewdiv"><%#Preview%></div>