【问题标题】:Change label text on bootstrap modal before click单击前更改引导模式上的标签文本
【发布时间】:2016-04-20 18:23:45
【问题描述】:

我有一个带有标签控件的引导模式。它是通过单击一个按钮启动的,我想在它启动之前更改标签的文本。出现的文本将来自它的 C# 端......但这永远不会触发。我猜回发永远不会发生(我猜显示模式正在阻止它?)所以没有设置文本。

我想要实现的是:单击按钮,设置标签文本(文本必须来自后端),显示模式。这是我目前所拥有的:

<asp:Button ID="btnEasy" runat="server" CssClass="btn btn-success" Text="Easy" Width="200px" Height="50px" data-toggle="modal" data-target="#modalQuestion" data-backdrop="static" data-keyboard="false" OnClick="btnEasy_Click"/>

<div class="modal fade" id="modalQuestion" tabindex="-1" role="dialog" aria-labelledby="questionHeader">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title" id="questionHeader">Easy Question</h4>
      </div>
      <div class="modal-body">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
              <ContentTemplate>
                <asp:Label ID="lblQuestion" runat="server" Text="Question"></asp:Label>
                  <br />
                  <br />
                <asp:Label ID="lblAnswer" runat="server" Text="Answer"></asp:Label>
              </ContentTemplate>
              <Triggers>
                  <asp:AsyncPostBackTrigger ControlID="btnEasy" EventName="Click" />
                  <asp:AsyncPostBackTrigger ControlID="btnShowAnswer" EventName="Click" />
              </Triggers>
          </asp:UpdatePanel>
      </div>
      <div class="modal-footer">
        <asp:Button ID="btnShowAnswer" runat="server" CssClass="btn btn-primary" Text="Show Answer" UseSubmitBehavior="false" OnClick="btnShowAnswer_Click"/>
        <asp:Button runat="server" CssClass="btn btn-default" data-dismiss="modal" Text="Close" />
      </div>
    </div>
  </div>
</div>

C#:

protected void btnEasy_Click(object sender, EventArgs e)
{
    lblQuestion.Text = "Easy clicked";
}

【问题讨论】:

    标签: c# jquery css asp.net twitter-bootstrap


    【解决方案1】:

    在 btnEasy_Click 函数中,设置文本值后,发出将执行的 javascript 代码。 例如。

    protected void btnEasy_Click(object sender, EventArgs e) 
    {   
        lblQuestion.Text = "Easy clicked";
        if(!ClientScript.IsStartupScriptRegistered("JSScript"))
        {
            ClientScript.RegisterStartupScript(this.GetType(),"JSScript",
            "ShowModalPopUp()");
        } 
    }
    

    编写你的js函数:

    <script>
        function ShowModalPopUp(){
           $('#modalQuestion').modal('show');
        } 
    </script>
    

    【讨论】:

    • 这一切似乎都有效,除了弹出窗口没有发生。 ClientScript... 行执行但没有任何反应
    • 是否进入ShowModalPopUp()函数?
    • 不-我也放了console.log和一个警报-没有执行任何操作
    • 在 RegisterStartupScript 函数中添加脚本标签 - ClientScript.RegisterStartupScript(this.GetType(), "JSScript", @"" );
    • 使用上面的所有代码让它工作,但替换了ClientScript... ith:ScriptManager.RegisterStartupScript(this, GetType(), "JSScript", "ShowModalPopUp()", true);
    【解决方案2】:

    您可以使用JS 轻松做到这一点。这里我展示了一个使用jQuery 的示例。将onclick 事件与将打开模式的按钮绑定。并更改当时的标签文本。像这样-

        //button code    
            <asp:Button ID="btnEasy" runat="server" CssClass="btn btn-success" Text="Easy" Width="200px" Height="50px" data-backdrop="static" data-keyboard="false" OnClientClick="showModal();"/>
    
        //scripts    
        <script>
            function showModal(){
                $('#<%=lblQuestion.ClientID%>').text('Easy clicked');
                $('#modalQuestion').modal('show');
            } 
        </script>
    

    【讨论】:

    • 如果“轻松点击”文本来自后端,这将是完美的 - 无论如何要实现这一点?
    • 我认为这可能很困难,因为当您的按钮返回后,整个页面将重新加载,并且您的模式都不可见,标签文本将是以前的值。无论如何,为什么您只想为更改标签文本而进行回发?
    • 我看到这种情况发生的大致情况是:用户单击按钮,从数据库加载随机问题并放在标签上,模式弹出窗口显示问题。如果我在模式上放置一个按钮,我可以在不重新加载的情况下更改标签文本(因为更新面板),但是在模式可见之前更改文本不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多