1
你好,我的項目有問題。當我提交一個creditcardnumber時,程序通常應該跳到我的servervalidation中,執行我的if語句中的命令並跳轉到兩個bool方法中,但程序只是通過if語句並跳轉到submitbutton方法來顯示結果。我做錯了什麼?爲什麼我的asp.net頁面不使用我的c#方法?
此服務器的代碼:
protected void SubmitMidtermBtn_Click(object sender, EventArgs e)
{
this.OnMidtermInfoCollected();
}
public void ServerValidation(object source, ServerValidateEventArgs args)
{
if (CardType(args.Value, CreditCardType.Text) && IsCreditCardValid(args.Value))
{
args.IsValid=true;
}
else
{
args.IsValid=false;
}
}
public bool CardType(string cardNumber, string cardType)
{
if (cardType.Equals("VISA"))
{
if (cardNumber.Length == 14 || cardNumber.Length == 16 &&
(cardNumber.StartsWith("4")))
{
return true;
}
}
if (cardType.Equals("Mastercard"))
{
if (cardNumber.Length == 16 &&
cardNumber.StartsWith("51") ||
cardNumber.StartsWith("52") ||
cardNumber.StartsWith("53") ||
cardNumber.StartsWith("54") ||
cardNumber.StartsWith("55"))
{
return true;
}
}
if (cardType.Equals("AmericanExpress"))
{
if (cardNumber.Length == 15 &&
cardNumber.StartsWith("34") ||
cardNumber.StartsWith("37"))
{
return true;
}
}
if (cardType.Equals("Discover"))
{
if (cardNumber.Length == 16 &&
cardNumber.StartsWith("601"))
{
return true;
}
}
return false;
}
public bool IsCreditCardValid(string cardNumber)
{
int i;
StringBuilder cleanNumber = new StringBuilder();
for (i = cleanNumber.Length + 1; i <= 16; i++)
cleanNumber.Insert(0, "0");
int multiplier, digit, sum, total = 0;
string number = cleanNumber.ToString();
for (i = 1; i <= 16; i++)
{
multiplier = 1 + (i % 2);
digit = int.Parse(number.Substring(i - 1, 1));
sum = digit * multiplier;
if (sum > 9)
sum -= 9;
total += sum;
}
return (total % 10 == 0);
}
這件事情不要搭上末結束標記,應該是在這個地方
此時服務器驗證應被激活:
<asp:CustomValidator ID="CreditcardValidation"
ControlToValidate="CreditCardNumber"
OnServerValidate="ServerValidation"
ErrorMessage=""
runat="server" Display="Dynamic">
<div class="alert alert-danger">Please enter a valid creditcard number</div>
</asp:CustomValidator>
有人可以幫我嗎?
我懷疑你會得到很多幫助,直到你縮小你的問題。很少有人會閱讀所有的代碼。 –
好吧,我只是將它縮短到不真正工作的方法。 – user2157063
您是否需要手動檢查來觸發像這樣的自定義服務器驗證? 'if(!Page.IsValid){return; }'在你的按鈕事件處理程序中。 –