如何在JavaScript中共享一个C#整数变量

3
我想把存在于C#服务器端的currentTab变量与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)
}

我使用这种方法再次获取PostBack后的当前选项卡。然而,在C#中,currentTab在PostBack之后仍然保持为1。 我该如何解决这个问题?
3个回答

2

需要一个服务器端隐藏域来保存这个信息。

你可以通过JavaScript访问该字段,作为服务器端控件,该值将在服务器端可用。


2
你可以在JavaScript函数中将索引写入到隐藏域中,然后在postback时读取该值。
在你的代码中,如果你的页面是postback的话,你可以检查该隐藏域。如下所示:
protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            currentTab = Int32.Parse(HiddenTabValue.Value);
        }

    }

在你的Page_Load中,你可以检查IsPostback是否为真。如果是真的,执行你的postback逻辑。比如将hiddenfield的值解析为int类型。 - Nicolai

1

您需要使用一些服务器控件将值发送回服务器(例如asp:HiddenField),或者使用查询字符串在那里设置选项卡索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接