Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信用卡验证前端_C#_Xamarin.forms_Xamarin.android_Xamarin.ios - Fatal编程技术网

C# 信用卡验证前端

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

大家好,, 我是Xamarin.forms的初学者。我正在尝试将信用卡验证添加到我的代码中。我得到一个错误,说对象验证没有设置为对象的实例

我附上我的代码和样本图像以供进一步参考。 我希望信用卡号的长度是16。日期格式应为MM/YY,CVV应为数字。如果不满足这些条件,我希望在我的表单字段下方显示错误文本

    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))