9

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

   <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)

所有 texboxes 显示空值。无论用户在文本框中输入什么。请建议如何解决它。这可能是因为 UseSubmitBehavior="false" 但如果我不使用它,则控制不会转到 onclick 事件。

4

4 回答 4

8

您没有看到您发布的值的原因是因为您的值没有被发布。引导模态管理器使用“body”元素作为它附加模态的根元素。结果,您的模态现在位于“表单”元素之外,并且不会将值发送回服务器。

要解决此问题,请更改“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 扩展

于 2013-11-14T01:39:15.713 回答
2

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
于 2015-09-07T02:56:26.293 回答
0

我只是有类似的问题。我通过使用 jquery 移动表单元素内的模式元素来解决这个问题。

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

    window.addEventListener('DOMContentLoaded', init, false);
于 2018-07-20T04:15:54.690 回答
-2

Use the dotnet text box, or add an id and a runat server tag to the input field.

于 2013-10-04T18:55:37.610 回答