2013-04-28 5 views
0

Я добавляю форму из кода позади до asp:PlaceHolder.
При добавлении формы к placeholder<form> теги отсутствуют.
Asp.net удаляет его по какой-либо причине.
Почему форма в форме не работает в Internet explorer

Но я нашел обходное решение для этого. Я добавил (пустой формы):

<form></form> 
<form... my form code that comes from code behind... 

И это отлично работает во всех браузерах, кроме IE !
Любая идея, как обходить это в IE.

(Может быть, это важно) Эта форма фактически кнопку PayPal код а и я получаю его от источника данных.
мне нужно добавить 10 кнопок на странице:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">   
<input type="hidden" name="cmd" ... 

ответ

1

Один из dissadvanced из ASP.NET WebForms является , что только одна форма asp.net разрешено на обычной странице ASP.NET. Одна форма, которая имеет runat="server" и внутри этой формы, только элементы управления asp.net корректно работают и взаимодействуют с кодом позади.

Однако вы можете сломать это, но не продолжать иметь такую ​​же функциональность asp.net. Вы можете использовать LiteralControl и direct render на странице код кнопки PayPal и только до того, как закрыть глобальную форму, используя </form>. Только закрытие перед добавлением новых.

Теперь, когда вы это делаете, вы должны забыть сообщение на той же странице и на самом деле иметь его только для сообщения в ПП. Единственный способ иметь некоторую страницу asp.net functionallyty - сохранить ее до закрытия первой формы и установить на 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> 

альтернативе вы можете сделать после редиректа, но требуют гораздо больше кода и средней страницы, которые создают почтовую данные PayPal по коду. Вот пример http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET

Те же самые трюки вы можете сделать это с помощью javascript, создать форму с помощью javascript на лету и опубликовать ее на кнопку Paypal, все на одной странице с javascript.

У меня есть все эти методы, все они работают.

+0

Это первое предложение вводит в заблуждение. У вас может быть только одна форма с 'runat = server', но вы можете иметь много форм на одной странице ASP.NET, если они не вложены. Нет причин, по которым вы должны обернуть весь документ в форме, хотя именно так работают большинство шаблонов веб-форм. – MikeSmithDev

+0

@MikeSmithDev У вас есть точка, я изменю ее (или вы сможете, если хотите исправить то, во что верите) – Aristos

+0

Я до сих пор не понял этого. Но я нашел эту статью http: //www.codeproject.com/Статьи/36071/Внедрение-не-ASP-NET-Posts-in-ASP-NET и решение идеально подходят для меня, единственная проблема заключается в том, что мне нужно иметь 5 кнопок на одной странице и не знаю, возможно ли это с помощью это решение может быть? – 1110