之一dissadvanced的asp.net web表單的是只有一個asp.net的形式允許在正常asp.net頁面。一個具有runat="server"
的表單,其內部只有asp.net控件才能正常工作,並與後面的代碼共同工作。
但是,你可以打破這一點 - 但不能繼續擁有相同的asp.net功能。你可以做的是使用LiteralControl並直接在頁面上渲染PayPal按鈕代碼,並且只需在使用</form>
關閉全局窗體之前。只是在添加新的之前關閉。
現在,當你這樣做的時候,你必須在相同的頁面上將帖子忘回來,並且實際上只有在發佈到PP之後才能發佈。具有一些asp.net頁面功能的唯一方法是在第一個窗體關閉之前保留它,並在web.config上設置保持驗證最上層的選項。
所以,你開始
<form name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
... some controls that post back to aspx page
</form>
和你結束了
<form name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
... some controls that post back to aspx page
... up to here maybe the buttons will work for the page, after that not any more
</form> //<---- added by you
// follow the PayPal buttons
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" ... >
</form>
// second button, etc
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" ... >
</form>
// now this close form is orphan....
</form>
替代就可以使後重定向,但需要更多的代碼和一箇中間頁,創造支付寶發佈數據在代碼後面。這裏是一個例子http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET
同樣的技巧,你可以用javascript做到這一點,創建一個使用JavaScript的表單,並將其發佈到貝寶按鈕,所有與JavaScript的同一頁。
我已經使用了所有這些技術,它們都可以工作。
第一句話是誤導性的。您只能使用'runat = server'來創建一個表單,但只要它們沒有嵌套,您可以在一個ASP.NET頁面中擁有多個表單。沒有理由必須將整個文檔包裝在表單中,儘管這是大多數webforms模板的工作原理。 – MikeSmithDev 2013-04-29 18:00:07
@MikeSmithDev你有一點,我會改變它(或者你可以,如果你想糾正你所相信的) – Aristos 2013-04-29 18:08:29
我仍然沒有想到這一點。但是我找到了這篇文章http://www.codeproject。com/Articles/36071/Implementing-Non-ASP-NET-Posts-in-ASP-NET和解決方案對我來說很完美,唯一的問題是我需要在一個頁面上有5個按鈕,不知道這是可能的這個解決方案可能? – 1110 2013-04-29 20:56:44