Hvordan fanger man input fra webcontrols ved postback
Jeg har en webside med flere custom webcontrols jeg har skrevet. Den ene er fx. en formular til at indtaste kreditkort oplysninger.Jeg har en submit knap i bunden, men når man klikker på den og prøver at fange input fra textboxene er de alle blanke.
Er der en måde at fange alle inputs fra forskellige kontroller på en gang, i stedet for at skulle tage een kontrol af gangen og finde input via postback?
Min kode til den ene webcontrol:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
internal class resfinder { }
namespace TCAS.WebUI.CustomComponents
{
/// <summary>
/// Summary description for CreditCardForm
/// </summary>
[DefaultProperty("CardholderNameText")]
[ToolboxData("<{0}:CreditCardForm PaymentMethodText='Payment Options' CreditCardNoText='Credit Card Number' CardholderNameText='Cardholder Full Name' runat='server'></{0}:CreditCardForm>")]
[ToolboxBitmap(typeof(resfinder), "CreditCardControl.CreditCardForm.bmp")]
public class CreditCardForm : WebControl, IPostBackEventHandler, IPostBackDataHandler
{
#region Labels
public virtual string PaymentMethodText
{
get { return ViewState["PaymentMethodText"] != null ? (string)ViewState["PaymentMethodText"] : "PaymentMethod"; }
set { ViewState["PaymentMethodText"] = value; }
}
public virtual string CreditCardNoText
{
get { return ViewState["CreditCardNoText"] != null ? (string)ViewState["CreditCardNoText"] : "CreditCardNo"; }
set { ViewState["CreditCardNoText"] = value; }
}
public virtual string CardholderNameText
{
get { return ViewState["CardholderNameText"] != null ? (string)ViewState["CardholderNameText"] : "CardholderName"; }
set { ViewState["CardholderNameText"] = value; }
}
public virtual string ExpirationDateText
{
get { return ViewState["ExpirationDateText"] != null ? (string)ViewState["ExpirationDateText"] : "Expiration Date"; }
set { ViewState["ExpirationDateText"] = value; }
}
public virtual string SubmitButtonText
{
get { return ViewState["SubmitButtonText"] != null ? (string)ViewState["SubmitButtonText"] : "Submit"; }
set { ViewState["SubmitButtonText"] = value; }
}
public virtual string HeaderText
{
get { return ViewState["HeaderText"] != null ? (string)ViewState["HeaderText"] : "Payment"; }
set { ViewState["HeaderText"] = value; }
}
#endregion
#region Control Style
protected override Style CreateControlStyle()
{
return new TableStyle(ViewState);
}
public virtual GridLines GridLines
{
get { return ((TableStyle)ControlStyle).GridLines; }
set { ((TableStyle)ControlStyle).GridLines = value; }
}
public virtual int CellSpacing
{
get { return ((TableStyle)ControlStyle).CellSpacing; }
set { ((TableStyle)ControlStyle).CellSpacing = value; }
}
public virtual int CellPadding
{
get { return ((TableStyle)ControlStyle).CellPadding; }
set { ((TableStyle)ControlStyle).CellPadding = value; }
}
public virtual HorizontalAlign HorizontalAlign
{
get { return ((TableStyle)ControlStyle).HorizontalAlign; }
set { ((TableStyle)ControlStyle).HorizontalAlign = value; }
}
public virtual string BackImageUrl
{
get { return ((TableStyle)ControlStyle).BackImageUrl; }
set { ((TableStyle)ControlStyle).BackImageUrl = value; }
}
#endregion
#region Names
protected virtual string PaymentMethodSelectName
{
get { return this.UniqueID + ":PaymentMethod"; }
}
protected virtual string CreditCardNoTextInputName
{
get { return this.UniqueID + ":CreditCardNo"; }
}
protected virtual string CardholderNameTextInputName
{
get { return this.UniqueID + ":CardholderName"; }
}
protected virtual string MonthSelectName
{
get { return this.UniqueID + ":Month"; }
}
protected virtual string YearSelectName
{
get { return this.UniqueID + ":Year"; }
}
protected virtual string HeaderSelectName
{
get { return this.UniqueID + ":Header"; }
}
protected virtual string SubmitInputName
{
get { return this.UniqueID; }
}
#endregion
#region Ids
protected virtual string PaymentMethodSelectId
{
get { return this.UniqueID + "_PaymentMethod"; }
}
protected virtual string CreditCardNoTextInputId
{
get { return this.UniqueID + "_CreditCardNo"; }
}
protected virtual string CardholderNameTextInputId
{
get { return this.UniqueID + "_CardholderName"; }
}
protected virtual string MonthSelectId
{
get { return this.UniqueID + "_Month"; }
}
protected virtual string YearSelectId
{
get { return this.UniqueID + "_Year"; }
}
protected virtual string HeaderSelectId
{
get { return this.UniqueID + "_Header"; }
}
protected virtual string SubmitInputId
{
get { return this.UniqueID; }
}
#endregion
#region Credit Card Info Fields
public PaymentMethod PaymentMethod
{
get { return ViewState["PaymentMethod"] != null ? (PaymentMethod)ViewState["PaymentMethod"] : PaymentMethod.Visa; }
set { ViewState["PaymentMethod"] = value; }
}
public string CreditCardNo
{
get { return ViewState["CreditCardNo"] != null ? (string)ViewState["CreditCardNo"] : string.Empty; }
set { ViewState["CreditCardNo"] = value; }
}
public string CardholderName
{
get { return ViewState["CardholderName"] != null ? (string)ViewState["CardholderName"] : string.Empty; }
set { ViewState["CardholderName"] = value; }
}
public DateTime ExpirationDate
{
get { return ViewState["ExpirationDate"] != null ? (DateTime)ViewState["ExpirationDate"] : DateTime.Now; }
set { ViewState["ExpirationDate"] = value; }
}
private bool hasPaymentMethodChanged;
private bool hasCreditCardNoChanged;
private bool hasCardholderNameChanged;
private bool hasExpirationDateChanged;
#endregion
#region Postback methods
void IPostBackEventHandler.RaisePostBackEvent(string args)
{
RaisePostBackEvent(args);
}
protected virtual void RaisePostBackEvent(string args)
{
ValidatingCreditCardEventArgs ve = new ValidatingCreditCardEventArgs(PaymentMethod, CreditCardNo, CardholderName, ExpirationDate);
OnValidatingCreditCard(ve);
}
bool IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection values)
{
return LoadPostData(postDataKey, values);
}
protected virtual bool LoadPostData(string postDataKey, NameValueCollection values)
{
PaymentMethod paymentMethod = values[PaymentMethodSelectName] == "0" ? PaymentMethod.Visa : PaymentMethod.MasterCard;
if (paymentMethod != PaymentMethod)
{
PaymentMethod = paymentMethod;
hasPaymentMethodChanged = true;
}
string creditCardNo = values[CreditCardNoTextInputName];
if (creditCardNo != CreditCardNo)
{
CreditCardNo = creditCardNo;
hasCreditCardNoChanged = true;
}
string cardholderName = values[CardholderNameTextInputName];
if (cardholderName != CardholderName)
{
CardholderName = cardholderName;
hasCardholderNameChanged = true;
}
int month = int.Parse(values[MonthSelectName]);
int year = int.Parse(values[YearSelectName]);
DateTime expirationDate = new DateTime(year, month, 25);
if (expirationDate != ExpirationDate)
{
ExpirationDate = expirationDate;
hasExpirationDateChanged = true;
}
if (!string.IsNullOrEmpty(values[SubmitInputName]))
Page.RegisterRequiresRaiseEvent(this);
return hasPaymentMethodChanged ||
hasCreditCardNoChanged ||
hasCardholderNameChanged ||
hasExpirationDateChanged;
}
void IPostBackDataHandler.RaisePostDataChangedEvent()
{
RaisePostDataChangedEvent();
}
protected virtual void RaisePostDataChangedEvent()
{
if (hasPaymentMethodChanged)
OnPaymentMethodChanged(EventArgs.Empty);
if (hasCreditCardNoChanged)
OnCreditCardNoChanged(EventArgs.Empty);
if (hasCardholderNameChanged)
OnCardholderNameChanged(EventArgs.Empty);
if (hasExpirationDateChanged)
OnExpirationDateChanged(EventArgs.Empty);
}
#endregion
#region Events
private static readonly object ValidatingCreditCardEventKey = new object();
public event ValidatingCreditCardEventHandler ValidatingCreditCard
{
add { Events.AddHandler(ValidatingCreditCardEventKey, value); }
remove { Events.RemoveHandler(ValidatingCreditCardEventKey, value); }
}
protected virtual void OnValidatingCreditCard(ValidatingCreditCardEventArgs e)
{
ValidatingCreditCardEventHandler handler = Events[ValidatingCreditCardEventKey] as ValidatingCreditCardEventHandler;
if (handler != null)
handler(this, e);
}
private static readonly object PaymentMethodChangedEventKey = new object();
public event EventHandler PaymentMethodChanged
{
add { Events.AddHandler(PaymentMethodChangedEventKey, value); }
remove { Events.RemoveHandler(PaymentMethodChangedEventKey, value); }
}
protected virtual void OnPaymentMethodChanged(EventArgs e)
{
EventHandler handler = Events[PaymentMethodChangedEventKey] as EventHandler;
if (handler != null)
handler(this, e);
}
private static readonly object CreditCardNoChangedEventKey = new object();
public event EventHandler CreditCardNoChanged
{
add { Events.AddHandler(CreditCardNoChangedEventKey, value); }
remove { Events.RemoveHandler(CreditCardNoChangedEventKey, value); }
}
protected virtual void OnCreditCardNoChanged(EventArgs e)
{
EventHandler handler = Events[CreditCardNoChangedEventKey] as EventHandler;
if (handler != null)
handler(this, e);
}
private static readonly object CardholderNameChangedEventKey = new object();
public event EventHandler CardholderNameChanged
{
add { Events.AddHandler(CardholderNameChangedEventKey, value); }
remove { Events.RemoveHandler(CardholderNameChangedEventKey, value); }
}
protected virtual void OnCardholderNameChanged(EventArgs e)
{
EventHandler handler = Events[CardholderNameChangedEventKey] as EventHandler;
if (handler != null)
handler(this, e);
}
private static readonly object ExpirationDateChangedEventKey = new object();
public event EventHandler ExpirationDateChanged
{
add { Events.AddHandler(ExpirationDateChangedEventKey, value); }
remove { Events.RemoveHandler(ExpirationDateChangedEventKey, value); }
}
protected virtual void OnExpirationDateChanged(EventArgs e)
{
EventHandler handler = Events[ExpirationDateChangedEventKey] as EventHandler;
if (handler != null)
handler(this, e);
}
#endregion
protected override HtmlTextWriterTag TagKey
{
get { return HtmlTextWriterTag.Table; }
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override void RenderContents(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Align, "left");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.RenderBeginTag(HtmlTextWriterTag.Th);
writer.Write(HeaderText);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(PaymentMethodText);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Name, PaymentMethodSelectName);
writer.AddAttribute(HtmlTextWriterAttribute.Id, PaymentMethodSelectId);
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Select);
writer.AddAttribute(HtmlTextWriterAttribute.Value, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Option);
writer.Write("Visa");
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Value, "1");
writer.RenderBeginTag(HtmlTextWriterTag.Option);
writer.Write("MasterCard");
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(CreditCardNoText);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Name, CreditCardNoTextInputName);
writer.AddAttribute(HtmlTextWriterAttribute.Id, CreditCardNoTextInputId);
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(CardholderNameText);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Name, CardholderNameTextInputName);
writer.AddAttribute(HtmlTextWriterAttribute.Id, CardholderNameTextInputId);
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(ExpirationDateText);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Name, MonthSelectName);
writer.AddAttribute(HtmlTextWriterAttribute.Id, MonthSelectId);
writer.RenderBeginTag(HtmlTextWriterTag.Select);
for (int month = 1; month < 13; month++)
{
writer.AddAttribute(HtmlTextWriterAttribute.Value, month.ToString());
writer.RenderBeginTag(HtmlTextWriterTag.Option);
if (month < 10)
writer.Write("0" + month.ToString());
else
writer.Write(month);
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.Write(" ");
writer.AddAttribute(HtmlTextWriterAttribute.Name, YearSelectName);
writer.AddAttribute(HtmlTextWriterAttribute.Id, YearSelectId);
writer.RenderBeginTag(HtmlTextWriterTag.Select);
for (int year = DateTime.Now.Year; year < DateTime.Now.Year + 10; year++)
{
writer.AddAttribute(HtmlTextWriterAttribute.Value, year.ToString());
writer.RenderBeginTag(HtmlTextWriterTag.Option);
writer.Write(year);
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
//writer.RenderBeginTag(HtmlTextWriterTag.Tr);
//writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
//writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
//writer.RenderBeginTag(HtmlTextWriterTag.Td);
//writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
//writer.AddAttribute(HtmlTextWriterAttribute.Value, "Submit");
//writer.AddAttribute(HtmlTextWriterAttribute.Name, SubmitInputName);
//writer.AddAttribute(HtmlTextWriterAttribute.Id, SubmitInputId);
//writer.RenderBeginTag(HtmlTextWriterTag.Input);
//writer.RenderEndTag();
//writer.RenderEndTag();
//writer.RenderEndTag();
}
}
}