2016-11-04 97 views
1

我正在使用Bootstrap和ASP.Net一起工作我的第一个项目。我打算使用Bootstrap徽章来指示我用作选项卡的LinkBut​​ton上的计数。计数从代码隐藏的页面加载更新。ASP.Net - Bootstrap-Badge在第二回传后丢失按钮

加载页面时徽章上的计数正确显示,并且它也在第1次回发中工作(切换标签页时),但在第2次(以及后续回发)上,前一个活动的按钮文本和徽章图标丢失按钮。

下面是一个使用2个按钮的例子,但我的项目由4个按钮组成,所以按钮一次一个地变化,而不是全部变化。在这个例子中,我看到两个按钮在第二次点击时一次空白。

我在做什么错,有没有更好的方法来做到这一点?

badge_test.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="badge_test.aspx.cs" Inherits="pages_badge_test" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <meta name = "viewport" content = "width = device-width, initial-scale = 1"> 
    <script type="text/javascript" src="../extras/jquery-2.1.0.js"></script> 
    <link rel="Stylesheet" type="text/css" href="../css/bootstrap.css" /> 
    <link rel="Stylesheet" type="text/css" href="../css/bootstrap-theme.css" /> 
    <script type="text/javascript" src="../js/bootstrap.js"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div class="btn-group" role="group"> 
      <asp:LinkButton ID="lnkBtnTask" class="btn btn-sm btn-primary" role="Button" runat="server" OnClick="lnkbtnMyTasks_Click" >My Tasks<span id="spnMyTask" runat="server" class="badge">0</span></asp:LinkButton> 
      <asp:LinkButton ID="lnkBtnReqst" class="btn btn-sm btn-default" role="Button" runat="server" OnClick="lnlbtnMyReqst_Click" >My Requests<span id="spnMyReq" runat="server" class="badge">0</span></asp:LinkButton> 
     </div> 
    </form> 
</body> 
</html> 

badge_test.aspx.cs [代码隐藏文件]

using System; 

public partial class pages_badge_test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     spnMyTask.InnerText = "5"; 
     spnMyReq.InnerText = "10"; 
    } 
    protected void lnkbtnMyTasks_Click(object sender, EventArgs e) 
    { 
     lnkBtnTask.CssClass = "btn btn-sm btn-primary"; 
     lnkBtnReqst.CssClass = "btn btn-sm btn-default"; 
    } 
    protected void lnlbtnMyReqst_Click(object sender, EventArgs e) 
    { 
     lnkBtnTask.CssClass = "btn btn-sm btn-default"; 
     lnkBtnReqst.CssClass = "btn btn-sm btn-primary"; 
    } 
} 

截图上初始加载(第一按钮处于活动状态),第一回发(点击上第2个按钮),第2个回复(点击第1个按钮)

enter image description here

编辑:如果我从linkbutton删除徽章和span标签,它工作正常。

回答

0

看来ViewState的是导致了问题,关闭了视图状态LinkButtonViewStateMode="Disabled"并启用它span标签ViewStateMode="Enabled",并开始正常工作,与徽章启用

<asp:LinkButton ID="lnkBtnReqst" ViewStateMode="Disabled" class="btn btn-sm btn-default" 
    role="Button" runat="server" OnClick="lnlbtnMyReqst_Click">My Requests 
    <span id="spnMyReq" runat="server" ViewStateMode="Enabled" class="badge">0</span> 
</asp:LinkButton>