AFAIK提交表格有两种方式。
例如:asp.net具有Button.UseSubmitBehavior属性
获取或设置一个值,该值指示Button控件是否使用 客户端浏览器的提交机制或 ASP.NET 回发机制。
如果该值设置为false
,则会生成以下脚本以提交表单。
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
问题:
但是,如果它使用 ASP.NET回发机制 - 它是如何完成的?
答案 0 :(得分:0)
不使用回发的方法是使用浏览器的提交机制完成的。想象一下,页面上的标准HTML表单包含action和method属性。像这样:
<form action="server_script.asp" method="post">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>
然后回发方法的工作原理如下。来自Microsoft的文档:
如果指定false,则ASP.NET页面框架将客户端脚本添加到页面以将表单发布到服务器。
此机制使用提交表单的脚本(可能是js)覆盖浏览器提交机制。我从来没有使用过ASP.NET,但我想它会为你生成一些AJAX代码,它将表单提交给服务器。这样做的一个优点是浏览器不会重定向到任何地方提交表单。浏览器停留在一个页面上,脚本以静默方式将数据提交给服务器。