我有这个代码,用于在我的网站上显示Flash Clock。我从后面的代码中获取源和时间,并将其作为ASCX文件中的json参数传递给flash swf,如下所示:
<li class="clock">
<span id="divAnalogClock">
<script type="application/json">
{settings:{id:'Clock', src:'<%# AnalogClockUrl %>', height:22, width:22, color:"#ffffff", allowScriptAccess:'sameDomain', align:'middle', installmessage:'', flashvars:{time:"<%# SiteTime %>", color:"#FFFFFF"}}}
</script>
</span>
</li>
这会产生类似于:
的东西<embed height="22" flashvars="time=<%# SiteTime %>&color=#FFFFFF"
pluginspage="http://www.adobe.com/go/getflashplayer"
src="<%# AnalogClockUrl %>" type="application/x-shockwave-flash"
width="22" quality="high" wmode="transparent" allowscriptaccess="sameDomain"
allowfullscreen="false" scale="exactFit" id="analogClock" color="#ffffff"
align="middle" name="analogClock">
在Page_Load:
上生成变量AnalogClockURL和SiteTimevoid Page_Load(object Sender, EventArgs e)
{
LoadClock();
}
private void LoadClock()
{
var flashList = CmsHelper.GetFlashList(new List<string> { "Clock" });
var flash = flashList.SingleOrDefault(f => f.Key.Equals("Clock"));
if (flash != null)
{
AnalogClockUrl = flash.FlashUrl;
}
SiteTime = string.Format("{0:HH}:{0:mm}:{0:ss}", TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, Techsson.SiteIntegration.Core.Http.RequestContext.Current.Market.TimeZone));
}
然而,ascx首先被触发,因此字段被留空,当页面加载被踢入时,为时已晚(从我正在进行的调试)。我该怎么做才能确保首先填充变量?
我也对解决这个问题的其他建议持开放态度,以防我所追求的并不是解决这个问题的最佳方法。
答案 0 :(得分:2)
将<%#
更改为<%=
<%#
用于数据绑定,但您没有任何约束。如果您真的想,可以在嵌入标记中添加runat="server"
,然后在Page_Load事件中添加analogClock.DataBind()
,但在此实例中似乎没有必要。