2011-12-16 108 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)或使用查詢字符串在此設置選項卡索引。