为什么我的 asp.net 页面不使用我的 C# 方法
本文关键字:我的 方法 asp net 为什么 | 更新日期: 2023-09-27 18:35:27
您好,我的项目有问题。当我提交信用卡号时,程序通常应该跳转到我的服务器验证,执行我的 if 指令中的命令并跳转到两个 bool 方法,但程序只是通过 if 指令并跳转到 submitbutton 方法来显示结果。我做错了什么?
这里是服务器的代码:
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>
有人可以帮我吗?
查看页面事件生命周期。
如果仔细阅读,您会发现单击事件的事件处理程序在对页面的隐式调用之前触发。Validate(),这是引发服务器验证事件的方法。 调用单击处理程序时,验证例程尚未关闭。
如果请求是回发,则调用控制事件处理程序。之后,调用所有验证程序控件的 Validate 方法,该方法设置单个验证程序控件和页面的 IsValid 属性。(此序列有一个例外:导致验证的事件的处理程序在验证后调用。
如果你想触发页面。前面的 Validate(),只需显式调用它即可。
protected void SubmitMidtermBtn_Click(object sender, EventArgs e)
{
this.Validate();
this.OnMidtermInfoCollected();
}