ASP.NET,在C#中使用data-toggle属性

时间:2014-04-21 13:18:17

标签: c# asp.net twitter-bootstrap webforms attributes

我正在使用带有标签菜单的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
        }

2 个答案:

答案 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中以显示/隐藏标签。