我在我的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事件。
答案 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服务器标记。