C# 信用卡验证前端
大家好,, 我是Xamarin.forms的初学者。我正在尝试将信用卡验证添加到我的代码中。我得到一个错误,说对象验证没有设置为对象的实例 我附上我的代码和样本图像以供进一步参考。 我希望信用卡号的长度是16。日期格式应为MM/YY,CVV应为数字。如果不满足这些条件,我希望在我的表单字段下方显示错误文本C# 信用卡验证前端,c#,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin.forms,Xamarin.android,Xamarin.ios,大家好,, 我是Xamarin.forms的初学者。我正在尝试将信用卡验证添加到我的代码中。我得到一个错误,说对象验证没有设置为对象的实例 我附上我的代码和样本图像以供进一步参考。 我希望信用卡号的长度是16。日期格式应为MM/YY,CVV应为数字。如果不满足这些条件,我希望在我的表单字段下方显示错误文本 int SchoolId, UserId, EventId; public CardDetailsPage(int schoolId, int userId, int eve
int SchoolId, UserId, EventId;
public CardDetailsPage(int schoolId, int userId, int eventId)
{
SchoolId = schoolId;
EventId = eventId;
UserId = userId;
InitializeComponent();
}
private async void Handle_Clicked(object sender, System.EventArgs e)
{
var creditcardnum = CreditCard.Text;
var CVV = cvc.Text;
var date = monthyear.Text;
if(creditcardnum!="")
{
if(creditcardnum.Length < 16)
CardError.Text = "Please Enter a Valid Credit Card Number";
}
else
{
CardError.Text = "Credit Card Number Cannot be null";
}
if (CVV != null && CVV.Length > 4 || CVV.Length < 3)
{
CVVError.Text = "Please Enter a Valid Credit CVV";
}
else
{
CVVError.Text = "Plese Enter a CVV";
}
var monthYear = new Regex(@"^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$");
if (date!= "" && !monthYear.IsMatch(date)) // <2>check cvv is valid as "999"
DateError.Text = "Please Check Your Month/Year Format";
else
{
DateError.Text = "Enter the Expiration Date";
}
if (string.IsNullOrWhiteSpace(CVVError.Text) || string.IsNullOrWhiteSpace(CardError.Text) || string.IsNullOrWhiteSpace(DateError.Text))
{
/// Call api to complete purchase
BuyEventPlayload buyPlayload = new BuyEventPlayload()
{
EventId = EventId,
SchoolId = SchoolId,
UserId = UserId,
CardNumber = creditcardnum,
CVV = CVV,
ExpDate = date,
FullName = "Test User"
};
HttpContent content = new StringContent(JsonConvert.SerializeObject(buyPlayload), Encoding.UTF8, "application/json");
var appResponse = await CommonUtility.PostAsyncContent(App.CurrentConfiguration.BuyEventUrl, content);
if (appResponse.IsSuccessStatusCode)
{
string eventsJson = await appResponse.Content.ReadAsStringAsync();
EventList objeventlist = new EventList();
objeventlist = JsonConvert.DeserializeObject<EventList>(eventsJson);
foreach (Event ent in objeventlist.Events)
{
if (ent.Id == EventId)
{
MessagingCenter.Send<CardDetailsPage, Event>(this, "", ent);
break;
}
}
await PopupNavigation.Instance.PopAsync(true);
}
}
}
}
int SchoolId、UserId、EventId;
公共CardDetailsPage(int schoolId、int userId、int eventId)
{
SchoolId=SchoolId;
EventId=EventId;
UserId=UserId;
初始化组件();
}
已单击私有异步无效句柄(对象发送方,System.EventArgs e)
{
var creditcardnum=CreditCard.Text;
var CVV=cvc.Text;
var date=monthyear.Text;
如果(creditcardnum!=“”)
{
如果(creditcardnum.Length<16)
CardError.Text=“请输入有效的信用卡号”;
}
其他的
{
CardError.Text=“信用卡号不能为空”;
}
如果(CVV!=null&&CVV.Length>4 | | CVV.Length<3)
{
CVVError.Text=“请输入有效的信用CVV”;
}
其他的
{
CVVError.Text=“请输入CVV”;
}
var monthYear=newregex(@“^(0[1-9]| 1[0-2])/(19 | 2[0-1])\d{2}$”;
如果(日期!=“”&&!monthYear.IsMatch(日期))//检查cvv是否有效为“999”
DateError.Text=“请检查您的月/年格式”;
其他的
{
DateError.Text=“输入到期日期”;
}
if(string.IsNullOrWhiteSpace(CVVError.Text)| string.IsNullOrWhiteSpace(carderro.Text)| string.IsNullOrWhiteSpace(DateError.Text))
{
///调用api以完成购买
BuyEventPlayload buyPlayload=新的BuyEventPlayload()
{
EventId=EventId,
学校ID=学校ID,
UserId=UserId,
CardNumber=creditcardnum,
CVV=CVV,
ExpDate=日期,
FullName=“测试用户”
};
HttpContent=newStringContent(JsonConvert.SerializeObject(buyPlayload),Encoding.UTF8,“application/json”);
var appResponse=wait CommonUtility.PostAsyncContent(App.CurrentConfiguration.BuyEventUrl,content);
if(appResponse.IsSuccessStatusCode)
{
string eventsJson=await appResponse.Content.ReadAsStringAsync();
EventList objeventlist=新事件列表();
objeventlist=JsonConvert.DeserializeObject(eventsJson);
foreach(objeventlist.Events中的事件ent)
{
if(ent.Id==EventId)
{
发送(此,“,ent);
打破
}
}
等待PopupNavigation.Instance.popsync(true);
}
}
}
}
}
CardDetailsPage.Xaml
<?xml version="1.0" encoding="UTF-8"?>
<pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Project.Views.[enter image description here][1]CardDetailsPage"
xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup">
<pages:PopupPage.Animation>
<animations:ScaleAnimation DurationIn="400" DurationOut="300" ScaleOut="0.8" ScaleIn="1.2" EasingIn="SinOut" EasingOut="SinIn" PositionIn="Center" PositionOut="Center" HasBackgroundAnimation="true" />
</pages:PopupPage.Animation>
<StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="Center" Margin="12" Padding="24" Spacing="24" BackgroundColor="White">
<StackLayout Orientation="Horizontal">
<Image Source="CreditCard.png" />
<Entry x:Name="CreditCard" Placeholder="Enter Card Number" WidthRequest="250" HeightRequest="50" MaxLength="16" Keyboard="Numeric" />
</StackLayout>
<Label x:Name="CardError" TextColor="Red" FontSize="12" FontFamily="Sans-Serif"/>
<StackLayout Orientation="Horizontal">
<StackLayout Orientation="Horizontal">
<Image Source="MonthDate.png" />
<Entry x:Name="monthyear" Placeholder="MM/YY" Text="{Binding Date, StringFormat=MM-yy}" WidthRequest="100" HeightRequest="50" />
</StackLayout>
<Label x:Name="DateError" TextColor="Red" FontSize="12" FontFamily="Sans-Serif"/>
<StackLayout Orientation="Horizontal">
<Image Source="cvc.png" />
<Entry x:Name="cvc" Placeholder="CVC" WidthRequest="100" HeightRequest="50" Keyboard="Numeric" MaxLength="4"/>
</StackLayout>
<Label x:Name="CVVError" TextColor="Red" FontSize="12" FontFamily="Sans-Serif"/>
</StackLayout>
<Button HorizontalOptions="Center" Text="PayNow" VerticalOptions="Center" TextColor="White" BackgroundColor="#00ccff" WidthRequest="250" FontSize="17" FontFamily="Sans-Serif" Clicked="Handle_Clicked" />
<Label x:Name="ErrorText" TextColor="Red" BackgroundColor="Transparent" WidthRequest="250" XAlign="Center" YAlign="Start" VerticalOptions="StartAndExpand" FontSize="8"/>
</StackLayout>
</pages:PopupPage>
如果用户没有输入任何内容,则
CreditCard.Text
将为空。您只测试空字符串
替换
if(creditcardnum!="")
与
要测试空字符串和空值此错误在哪一行代码上?Brad,错误位于:if(creditcardnumber<16)。我正在尝试提交表格,但没有输入任何细节。但是,他们给出了一个错误。我希望在未输入任何内容时看到错误消息尝试此操作,使此行:var creditcardnum=CreditCard.Text;add.ToString()使var creditcardnum=CreditCard.Text.ToString()。如果是这样,它将需要对其他字段执行相同的操作。Brad,这不起作用。我将格式更改为toString
if (!string.IsNullOrEmpty(CreditCard.Text))