如何使用ASP.NET,C#后面的代码调用javascript函数?

问题描述:

我想从后面的代码传递一些参数给javascript函数。我的Javascript功能如下。如何发送arg到这个func。从服务器端代码。如何使用ASP.NET,C#后面的代码调用javascript函数?

function addTab(tabid,tablist) { 
      //to Find the Panel 
      var Panel = $find("<%=RadPanelBar2.ClientID %>"); 
      //To find the Tab Strip 
      var tabStrip = Panel._findItemByValue("QueueGridPanel").findControl("RadTabStrip2") 
      tabStrip.get_tabs().clear(); 

      var newTabNames = "MyTab1,MyTab2,MyTab3"; 
      //var newTabNames = document.getElementById("ctl00_GridContentPlaceHolder_hfTabs").value; 

      var TabsNames = newTabNames.split(','); 
      var i = 0; 
      while (i < TabsNames.length) { 
       var ntab = new Telerik.Web.UI.RadTab(); 
       tabStrip.get_tabs().add(ntab); 
       ntab.set_text(TabsNames[i]); 
       i++; 
      } 
      return false; 
     } 
+0

我没有看到你在哪里使用函数中的参数。你如何期待它们被使用以及函数是如何被调用的? – tvanfosson 2010-08-13 14:05:21

+0

我想使用这个变量,现在我使用示例硬编码值。 – Ramakrishnan 2010-08-13 14:08:50

+0

你可以扩展你的问题吗?这个函数中的一个参数是否应该从服务器传递? – 2010-08-13 14:09:48

在MSDN检出RegisterClientScriptBlock。您可以使用它在回发后插入Javascript。

String csName = "myScript"; 
Type csType = this.GetType(); 

// Get a ClientScriptManager reference from the Page class. 
ClientScriptManager cs = Page.ClientScript; 

// Check to see if the client script is already registered. 
if (!cs.IsClientScriptBlockRegistered(csType, csName)) 
{ 
    StringBuilder csText = new StringBuilder(); 
    csText.Append("<script type=\"text/javascript\"> "); 
    csText.Append("addTab(" + myTabID + ", " + myTabList + "); </"); 
    csText.Append("script>"); 
    cs.RegisterClientScriptBlock(csType, csName, csText.ToString()); 
} 

RegisterClientScriptBlock方法将客户端脚本插入紧邻Page对象元素的开始标记之下。

对于你在这里描述的用途,我在全局JavaScript声明中使用了asp:Literal控件和泵。

<script type="text/javascript"> 
    var FirstNameId = "<%=Me.txtFirstName.ClientID%>"; 
    var MiddleNameId = "<%=Me.txtMiddleName.ClientID%>"; 
    var LastNameId = "<%=Me.txtLastName.ClientID%>"; 
</script> 

然后,当我以后需要它们时,它们可用于整个页面。