У меня есть две панели, каждая из которых имеет форму. Сначала они спрятаны, а выбор переключателя сделает 1 панель видимой. Один - для платежей по кредитным картам, а другой - для echecks. Код работает для этого, но есть один глюк. Опция echeck сначала очищает форму при отправке, а затем передает форму во втором клике.Две панели с формами, которые переключаются на радиокнопку
Как я могу получить 2-ю панель (чеки), чтобы отправить форму, когда она была выбрана переключателем в первый раз? Это связано с Page.IsPostBack или, может быть, как мои инструкции if находятся в разделе Page_Load?
Вот кнопки 2 радио
<asp:RadioButton ID="RadioButton1" runat="server" GroupName="RbPayment" OnCheckedChanged="RadioButton1_CheckedChanged" Text="Credit Card" Checked="True" AutoPostBack="True" />
<asp:RadioButton ID="RadioButton2" runat="server" GroupName="RbPayment" OnCheckedChanged="RadioButton2_CheckedChanged" Text="Check" AutoPostBack="True" />
Здесь у меня есть 2 панели и образует
<asp:Panel ID="PanelCard" runat="server" Visible="false" OnLoad="RadioButton1_CheckedChanged">
<%--Form here--%>
<asp:Button ID="Button1" runat="server" Text="Submit Payment" ClientIDMode="Static" CssClass="formbutton" />
</asp:Panel>
<asp:Panel ID="PanelCheck" runat="server" Visible="false" OnLoad="RadioButton1_CheckedChanged">
<%--Form here--%>
<asp:Button ID="Button1" runat="server" Text="Submit Payment" ClientIDMode="Static" CssClass="formbutton" />
</asp:Panel>
У меня есть этот код, чтобы переключаться между панелями, когда переключатель выбран
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (RadioButton1.Checked)
{
PnlCard.Visible = true;
PnlCheck.Visible = false;
}
if (RadioButton2.Checked)
{
PnlCard.Visible = false;
PnlCheck.Visible = true;
}
}
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
if (RadioButton1.Checked)
{
PnlCard.Visible = true;
PnlCheck.Visible = false;
}
if (RadioButton2.Checked)
{
PnlCard.Visible = false;
PnlCheck.Visible = true;
}
}
Здесь я думаю, что проблема в том, что я не уверен, что нужно исправить.
protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
BtnSubmitCard.PostBackUrl = "https://secure2.authorize.net/gateway/transact.dll";
//Other code here for the form
}
if (PnlCard.Visible == true)
{
BtnSubmitCard.PostBackUrl = "https://secure2.authorize.net/gateway/transact.dll";
//Other code here for the form
}
if (PnlCheck.Visible == true)
{
BtnSubmitCheck.PostBackUrl = "https://secure2.authorize.net/gateway/transact.dll";
//Other code here for the form
}
}
это звучит как проблема с IsPostBack .. возможно, вы могли бы сделать это с помощью UpdatePanel, вместо этого это будет делать частичные обратные вызовы – MethodMan
Являются ли эти формы серверными элементами? asp.net может обрабатывать только одну серверную форму на странице. Может ли это вызвать вашу проблему? – Sami
@MethodMan Спасибо, я просто попробовал это, но это не сработает, потому что я использую некоторые поля «ввода» (из-за безопасности для платежного шлюза). – SummerDays