ASP.NET AJAX部分回发,动态JavaScript值

时间:2011-01-20 15:53:10

标签: javascript asp.net asp.net-ajax

我正在使用UpdatePanel内的用户控件。用户控件使用swfobject将flash对象添加到用户控件中的div。用户控件的部分功能是允许用户更改“频道”。频道在后面的代码中设置和处理,因此下面的JavaScript中的调用为<%= channel%>。

我遇到的问题是,当保存新频道时,下面的JavaScript代码仍然指向旧频道。我可以解决这个问题的唯一方法是通过后面的代码刷新页面,但我认为必须有更好的方法来做到这一点......

有人可以帮忙吗?

<script type="text/javascript">
//Required to readd the widget to the div after partial postback
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_pageLoaded(flashVideo_<%=widgetId%>); 

// SWFObject embed
function flashVideo_<%=widgetId%>() {
    var flashvars = {
    initialURL: escape(document.location),
    paramXMLPath: "/videoprotoype/single-video.aspx?channel=<%=channel%>"          
    }
    var params = {
        bgcolor: "#121212",
        allowfullscreen: "true"
    }
    var attributes = {}
    swfobject.embedSWF("/videoprotoype/assets/slideshowpro.swf", "video_<%=widgetId%>", "285", "215", "10.0.0", false, flashvars, params, attributes);
} 
 </script>   
 <div id="video_<%=widgetId%>">
 </div>

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

在页面级别(<head>部分的某个地方)为当前选定的频道声明全局变量是否是一种解决方案:

<script type="text/javascript">
    var channel = <%=channel%>;
</script>

在Javascript中使用此变量,而不是使用ASP.NET代码“nuggets”(<%...%>)。

现在,当用户更改频道并重新加载UpdatePanel时,您可以注册一个启动脚本,该脚本将更新频道变量以指向新频道:

代码隐藏:

  ScriptManager.RegisterStartupScript(myCustomControl, myCustomControl.GetType(), 
    Guid.NewGuid().ToString(), "channel = " + channel, true);

其中“mycustomControl”是您的用户控件的实例。

希望这会对你有所帮助。