2013-08-27 68 views
0

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

不使用回發的方法是使用瀏覽器的提交機制完成的。想象一下帶有操作和方法屬性的頁面上的標準HTML表單。類似這樣的:

<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代碼給你提交表單到服務器。這有一個好處,即瀏覽器不會重定向到任何地方來提交表單。瀏覽器停留在一頁上,腳本悄悄地將數據提交給服務器。

+0

你的答案重複我的問題事實。 '__doPostBack'腳本不適用於ajax。 ajax使用xmlhttp對象。但是在updatepanel正在使用時會使用它。無論如何,那不是我的問題。 –