您的位置:首页 > 编程语言 > ASP

手动提交代替asp.net的button控件提交

2016-07-18 00:00 447 查看
摘要: 虽然在asp.net的button控件中提供了OnClientClick事件,可以通过OnClientClick=return xxx()返回值来判断是否执行<asp:button/>的onclick提交。 但是这种情况要求必须返回true or false才能使用,有些情况我们不方便返回true or false,这时可以放弃使用控件的onclick ,设置UseSubmitBehavior 属性,用js 来手动提交form表单

今天在项目里的需求遇到“提交之前要弹窗用户确认后删除”,如果是confrim的话就很简单,直接OnClientClick=return aaa(); 在 function aaa()里写confrim并且根据用户的选择return一个true或者false就OK了。 但是项目是用的bootstrap的样式,要求使用bootstrap的模态框来弹窗提醒(bootstrap的提示框两个选项是单独的div或者button或者<a>标签等),我只能在aaa()里弹出bootstrap的模态框,但是模态框选择的什么不能返回到aaa()里,也返回不到 OnClientClick里。

请教过经理之后,给button添加了usesubmitbehavior=“false”,在浏览器按F12,可以看到OnClientClick事件最终被解析成:



最终被编译成 onclick=“return Submit();if(true) _doPostBack('btn_submit','')”

UseSubmitBehavior 属性(摘自文档):

使用 UseSubmitBehavior 属性来指定 Button 控件使用客户端浏览器的提交机制还是 ASP.NET 回发机制。默认情况下,此属性的值为 true,从而导致 Button 控件使用浏览器的提交机制。如果指定为 false,则 ASP.NET 页框架将客户端脚本添加到页面,以将窗体发送到服务器。

当 UseSubmitBehavior 属性为 false 时,控件开发人员可以使用 GetPostBackEventReference 方法来返回 Button 的客户端回发事件。 GetPostBackEventReference 方法返回的字符串包含客户端函数调用的文本,可以插入到客户端事件处理程序中。

这样我们可以不再给Submit()方法返回ture和false,在需要提交的时候直接写 _doPostBack('按钮id','')来把form表单手动提交,代码如下

asp,net控件部分:

<asp:Button runat="server" CssClass="btn btn-success" UseSubmitBehavior="false" Text="Submit" ID="btn_submit" OnClientClick="return Submit()"  />

js部分:

//提交按钮判断选中弹出模态框
function Submit() {
if (document.getElementById("NIL").checked) {
$("#delConfirm").modal('show');
}
//如果NIL复选框没被选中,直接_doPostBack()提交
else
__doPostBack('btn_submit', '');
}

bootstrap弹窗部分:

<--删除弹窗confirm-->
<div id="delConfirm" class="modal hide">
<div class="modal-header">
<button data-dismiss="modal" class="close" type="button">×</button>
<h3>confirms your actions </h3>
</div>
<div class="modal-body">
<p>您勾选了NIT,Charge信息将被清空,您确定这样做吗</p>
</div>
<div class="modal-footer">
<--如果选择sure确认,则直接调用chargeBack()方法提交-->
<a data-dismiss="modal" class="btn btn-primary" onclick="chargeBack()">Sure</a>
<a data-dismiss="modal" class="btn" >Cancel</a>
</div>
</div>

//chargeBack里直接就是提交
function chargeBack(sub) {
__doPostBack('btn_submit', '');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息