2011-12-16 115 views
3

我想分享C#和JavaScript之间的currentTab变量。这里是我的代码:如何在C#和JavaScript之间共享变量?

C#:

public int currentTab = 1; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(Type.GetType("System.String"), "addScript", "showTab(" + currentTab + ");", true); 
} 

的JavaScript:

var currentTab = "<%=currentTab%>"; 

function showTab(index) 
{ 
    currentTab = index; 
    // Show tab at (index) 
} 

我用这种方法在回发再次显示当前选项卡。但是,C#上的currentTabPostBack之后仍为1。我该如何解决这个问题?

回答

2

您可以将您的javascript函数的索引写入隐藏字段,然后在回发中读取该索引。

在你的代码中,如果你的页面是回发的,你检查hiddenfield。 像这样:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     { 
      currentTab = Int32.Parse(HiddenTabValue.Value); 
     } 

    } 
+0

如何阅读回发?对不起,我第一次使用asp.net – 2011-12-16 10:11:22

+0

在你的Page_Load中,你可以检查IsPostback是否为真。如果确实如此,请执行回传逻辑。就像解析隐藏域的值一样,将其转换为int。 – Nicolai 2011-12-16 10:12:18

+0

+1谢谢,它的工作原理:) – 2011-12-16 10:17:37

2

有一个服务器端hidden field持有这条信息。

您可以通过javascript访问该字段,并且作为服务器端控件,该值将在服务器端可用。

1

您需要使用某些服务器控件将值发送回服务器(即asp:HiddenField)或使用查询字符串在此设置选项卡索引。