Несколько форм на ASP.NET странице
Вопрос
Исходя из классического опыта работы с ASP, я привык к нескольким формам на странице, но это явно ограничено на странице ASP.NET.
Однако у меня есть ситуация, когда у меня есть форма, которая собирает входные данные от пользователя, сохраняет данные в базу данных, а затем я хочу отобразить (и настроить значения) специальную форму, которая публикуется на веб-сайте PayPal.
Если бы значения полей формы PayPal были статическими, проблем бы не было, но поскольку я хочу манипулировать формой на стороне сервера (чтобы настроить поля qty, desc, price и т.д.), Это будет будет проблемой.
Я рассматривал возможность перенаправления на другую страницу после записи в базу данных, и я подозреваю, что это сработало бы довольно хорошо, но это требует дополнительных усилий, которые могут оказаться ненужными.
Мне также было предложено, чтобы я мог программно отобразить другую форму, в зависимости от того, в какой части цикла я нахожусь.То есть используйте заполнитель, а в Page_Load я бы изначально добавил форму базы данных (в комплекте с дочерними элементами управления) и форму PayPal после обратной отправки.
Этот сценарий должен быть обычным для вас, ребята, поэтому я ищу мнения, советы и любые соответствующие примеры кода, если у вас есть предпочтительный подход.
Я знаю, что справлюсь, но этот проект - средство обучения, поэтому я хочу перенять то, что считается лучшей практикой.
Заранее благодарю...
Крис
Решение
У вас может быть несколько форм, просто только одна форма может иметь runat="server"
атрибут.
Есть множество ответов на вопрос, как заставить PayPal работать;но поскольку это обучающий инструмент, это может быть обманом.Честно говоря, я бы посмотрел на полноценный API PayPal, а не использовал метод несколько упрощенной формы (с дополнительным преимуществом, что это должно еще больше растянуть ваше обучение).
В противном случае да, настройте HTML-форму вне серверной формы, добавьте в нее литерал и запишите туда нужные фрагменты.
Другие советы
Базовый подход заключается в использовании двух панелей на странице - одной для первой формы и другой для второй.
Вы можете изменить свойство видимости этих панелей в зависимости от того, какую форму вы хотите отобразить (во время загрузки страницы или в любое время перед рендерингом).
Возможно, я неправильно понимаю вопрос, но разве вы не можете просто иметь 2 divs внутри формы, где в любой момент виден только один.например ,
<form id="Form1" method="post" runat="server">
<div id="getUserInput" visible="true">
<asp:button id="btnSubmitFirst" />
</div>
<div id="doSubmissionToPaypal" visible="false">
<asp:button id="btnSubmitSecond" />
</div>
</form>
Затем в btnSubmitFirst_Click:
doSubmissionToPaypal.visible=True
getUserInput.visible = false
Что-то в этом роде?
Обходным решением для этого paypal является использование Код интеграции Paypal поскольку Paypal не всегда наиболее удобен для интеграции.Тяжелая работа в основном делается за вас.