我正在使用带有标签菜单的Bootstrap。它使用属性data-toggle =“tab”打开选项卡。现在我在其中一个选项卡中有一个按钮,当我单击该按钮时,它会从代码隐藏文件中运行一些C#代码。它使用DataBind(),因此页面将重新加载。但是,当它重新加载时,它显然打开了默认选项卡,但我希望它在不同的选项卡打开时重新加载。有没有办法可以在我的C#代码中运行数据切换?
HTML标签如下所示:
<ul class="nav nav-tabs">
<li runat="server" id="tabHome" class="active"><a href="#home" data-toggle="tab"><i class="fa fa-home"></i> Home</a></li>
<li runat="server" id="tabUsers"><a href="#profile" data-toggle="tab"><i class="fa fa-user"></i> Users</a></li>
<li runat="server" id="tabRoles"><a href="#messages" data-toggle="tab"><i class="fa fa-tags"></i> Roles</a></li>
<li runat="server" id="tabGames"><a href="#settings" data-toggle="tab"><i class="fa fa-trophy"></i> Games</a></li>
</ul>
在选项卡“tabRoles”中,我有一个执行一些代码的按钮:
if (!Roles.RoleExists(txtRolename.Text))
{
Roles.CreateRole(txtRolename.Text);
BindUsers();
BindRoles();
feedback.Visible = true;
lblFeedback.Text = "<strong>Success!</strong> The role "+txtRolename.Text+" was created.";
txtRolename.Text = "";
}
else
{
//Role already exists blabla
}
答案 0 :(得分:1)
由于您通过id和runat属性将每个列表项标记为“服务器控件”,因此您可以在服务器端代码中读取这些对象。尝试使用LI项的“attributes”集合属性来获取每个标签的数据切换值,css类等。
从那里,您可以使用这些值来配合客户端代码,并在页面加载时激活相应的选项卡。
答案 1 :(得分:1)
你的List项目上有runat = server,所以你可以在你的代码中使用它们。
这样的事情:
if (!Roles.RoleExists(txtRolename.Text))
{
//Roles stuff
//figure out which tab you want to return to
tabUsers.CssClass = "active";
tabHome.Attributes.Remove("class");
//do the same for other tabs
}
您还可以设置一些隐藏变量,并将逻辑直接添加到您的html中以显示/隐藏标签。