使用bootstrap modal asp.net在回发时文本框为空

时间:2013-10-04 14:37:52

标签: asp.net twitter-bootstrap twitter-bootstrap-3

我在我的asp.net页面中使用bootstrap模式,如下所示:

   <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
            aria-hidden="true">
<asp:UpdatePanel ID="ModalUpdatePanel" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnRegister" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <p>

textboxes here


 <div class="popup-footer-wrapper">
                <div class="popup-footer-left">
                    <%-- <input type="submit" class="login-button" name="login-button" value="Sign Up">--%>
                    <asp:Button ID="btnRegister" runat="server" CssClass="login-button" OnClick="btnRegister_Click"
                        UseSubmitBehavior="false" Text="<%$ Resources: HRGELoggedOutMaster, Signup %>" />

                </div>
            </div>

        </p>
    </ContentTemplate>
</asp:UpdatePanel>
</div>

我在里面看到

  protected void btnRegister_Click(object sender, EventArgs e)

所有texbox都显示空值。文本框中的任何用户类型。请建议如何解决它。可能是因为UseSubmitBehavior =“false”但是如果我不使用它,那么控制就不会去onclick事件。

4 个答案:

答案 0 :(得分:8)

您没有看到发布值的原因是因为您的值未发布。引导模态管理器使用'body'元素作为它附加模态的根元素。因此,您的模态现在位于'form'元素之外,并且值不会被发布回服务器。

要解决此问题,请更改“manager”属性的默认值,如下所示:

// Note the manager is passed to the root form element. 
// Otherwise, the modals are taken out of the form and 
// values not posted back to the server
$.fn.modal.defaults.manager = $.fn.modalmanager.defaults.manager = 'body form:first';

编辑:假设您使用的是Bootstrap-Modal Extension

答案 1 :(得分:1)

Steven Anderson是对的,因为模态输入不在表格范围内,所以不会发布值。

我能够使用javascript将模态输入的值复制到隐藏的asp.net控件来解决此问题。

我在模态中创建了一个隐藏的asp.net控件

<asp:HiddenField ID="MyHiddenControl" value="name" runat="server" />

我想提交的模态文本框:

<asp:TextBox ID="FormYourName" CssClass="form-control" runat="server"/>`

我的模态提交按钮看起来像这样;

<asp:Button ID="BtnSubmit" runat="server" Text="Submit" CssClass="btn btn-primary" OnClientClick="Javascript:DoCustomPost();" UseSubmitBehavior="false" />

我的JavaScript函数如下:

function DoCustomPost()
{
var ModalTextBox = document.getElementById("FormAmenity");
var HiddenTextBox = document.getElementById("MyHiddenControl");
// This is the value I want to Post
MyHiddenControl.value = ModalTextBox.value
}

所以当我在我的模态窗口中点击“提交”回发踢,文本框的值被复制到隐藏的控件,我可以从代码隐藏的隐藏控件中读取值:

Protected Sub BtnSubmit_Click(sender As Object, e As EventArgs) Handles BtnSubmit.Click
Dim Something As String = MyHiddenControl.Value
End Sub

答案 2 :(得分:0)

我也有类似的问题。我通过使用jquery在form元素内移动模式元素解决了这一问题。

   function init() {
        var element = $('#myModal').detach();
        $($("form")[0]).append(element);        
    }

    window.addEventListener('DOMContentLoaded', init, false);

答案 3 :(得分:-2)

使用dotnet文本框,或在输入字段中添加id和runat服务器标记。