Даль ответ правильный! (не принимая во внимание мой ответ)
У меня была похожая проблема в ASP.NET (4.0) при попытке отправить данные в SagePay (так же, как при публикации формы PayPal). Я писал поля формы динамически с использованием панелей в коде позади, используя
Dim Panel As New Panel
Panel.Controls.Add(New LiteralControl("My <input> controls HTML")) '1 control.add per <input> control.
MyDiv.Controls.Add(Panel)
Я также записывал всю <форму> динамически, поэтому, когда дело дошло до отладки, я не получил предупреждений относительно проблемы, что весь мой Site.Master находится внутри - это не видно со страницы .aspx, использующей мастер как шаблон! Это было довольно неприятно ... Пока я не прочитал, что у вас не может быть вложенной <формы> ... Есть только две альтернативы:
1) переместить детали формы за пределы первого, который находится на моем сайте. Мастер с самой страницы .aspx. (Мне не понравилась идея этого, грязный грязный!)
2) создайте другой элемент управления, который НЕ предназначен для публикации моих данных.
Я выбрал последнее!
<asp:Button id="btn_payment" value="Proceed to Payment" Text="Proceed to Payment" runat="server" PostBackUrl="https://test.sagepay.com/gateway/service/vspform-register.vsp" />
Кнопка, отправленная в SagePay, забрала мои динамически сгенерированные поля (называемые со страницы .aspx), и, поскольку они уже были в моем Site.Master - все работало хорошо! - Надеюсь, это поможет любому, кто использует динамически генерируемый HTML с формами.