ASP.NET,在C#中使用数据切换属性

本文关键字:数据 属性 NET ASP | 更新日期: 2023-09-27 17:59:08

我使用的是Bootstrap,它有一个选项卡菜单。它使用属性数据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
        }

ASP.NET,在C#中使用数据切换属性

由于您通过id和runat属性将每个列表项标记为"服务器控件",因此您可以在服务器端代码中读取这些对象。尝试使用LI项目的"attributes"集合属性来获取每个选项卡的数据切换值、css类等。

从那里,您可以使用这些值与客户端代码绑定,并在页面加载时激活相应的选项卡。

您的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中添加逻辑以显示/隐藏选项卡。