C# ViewData以红色突出显示,但我认为是我的模型为空?

C# ViewData以红色突出显示,但我认为是我的模型为空?,c#,asp.net-mvc,model-view-controller,razor-pages,C#,Asp.net Mvc,Model View Controller,Razor Pages,我有这个剃须刀页面,最终将接受信用卡信息。我有一个与razor页面关联的模型。抛出一个错误 NullReferenceException:对象引用未设置为 对象AspNetCore.Views\u PaymentPage\u CreditCardEntry.ExecuteAsync()在中 CreditCardEntry.cshtml 如您所见,ViewData突出显示为问题所在。 我知道我可能以错误的方式混合了MVC和Razor Pages技术,但不知道如何修复它 这是我的模型: using

我有这个剃须刀页面,最终将接受信用卡信息。我有一个与razor页面关联的模型。抛出一个错误

NullReferenceException:对象引用未设置为 对象AspNetCore.Views\u PaymentPage\u CreditCardEntry.ExecuteAsync()在中 CreditCardEntry.cshtml

如您所见,ViewData突出显示为问题所在。 我知道我可能以错误的方式混合了MVC和Razor Pages技术,但不知道如何修复它

这是我的模型:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;

namespace InTheCloud.Views.PaymentPage
{
    [AllowAnonymous]
    public class CreditCardEntryModel : PageModel
    {
        public async Task OnGetAsync()
        {
            if (!string.IsNullOrEmpty(ErrorMessage))
            {
                ModelState.AddModelError(string.Empty, ErrorMessage);
            }

        }

        public CreditCardEntryModel()
        {

            Information = new Info()
            { 
            FirstName= "",
            LastName = "",
            AddressLine1 = "",
            AddressLine2 = "",
            City = "",
            State = "",
            Zip = "",
            CCNumber = "",
            CCExpiDate = "",
            CVCCode = ""
            };

    }

        [BindProperty]
        public Info Information { get; set; }

        [TempData]
        public string ErrorMessage { get; set; }

        public class Info
        {
            [Required]
            public String FirstName { get; set; }

            [Required]
            public String LastName { get; set; }

            public String AddressLine1 { get; set; }

            public String AddressLine2 { get; set; }

            public String City { get; set; }

            public String State { get; set; }

            public String Zip { get; set; }

            public String CCNumber { get; set; }

            public String CCExpiDate { get; set; }

            public String CVCCode { get; set; }

        }

        public IEnumerable<SelectListItem> StatesList
        {
            get
            {
                return new List<SelectListItem>
                {
                    new SelectListItem { Text = "Alabama", Value = "Alabama"},
                    new SelectListItem { Text = "Alaska", Value = "Alaska"},
                    new SelectListItem { Text = "Arizona", Value = "Arkansas"},
                    new SelectListItem { Text = "California", Value = "California"},
                    new SelectListItem { Text = "Colorado", Value = "Colorado"},
                    new SelectListItem { Text = "Conneticut", Value = "Conneticut"},
                    new SelectListItem { Text = "Delaware", Value = "Delaware"},
                    new SelectListItem { Text = "District of Columbia", Value = "District of Columbia"},
                    new SelectListItem { Text = "Florida", Value = "Florida"},
                    new SelectListItem { Text = "Georgia", Value = "Georgia"},
                    new SelectListItem { Text = "Hawaii", Value = "Hawaii"},
                    new SelectListItem { Text = "Idaho", Value = "Idaho"},
                    new SelectListItem { Text = "Illinois", Value = "Illinois"},
                    new SelectListItem { Text = "Indiana", Value = "Indiana"},
                    new SelectListItem { Text = "Iowa", Value = "Iowa"},
                    new SelectListItem { Text = "Kansas", Value = "Kansas"},
                    new SelectListItem { Text = "Kentucky", Value = "Kentucky"},
                    new SelectListItem { Text = "Louisiana", Value = "Louisiana"},
                    new SelectListItem { Text = "Maine", Value = "Maine"},
                    new SelectListItem { Text = "Maryland", Value = "Maryland"},
                    new SelectListItem { Text = "Massachusetts", Value = "Massachusetts"},
                    new SelectListItem { Text = "Michigan", Value = "Michigan"},
                    new SelectListItem { Text = "Minnesota", Value = "Minnesota"},
                    new SelectListItem { Text = "Missisippi", Value = "Arkansas"},
                    new SelectListItem { Text = "Missouri", Value = "Missouri"},
                    new SelectListItem { Text = "Montana", Value = "Montana"},
                    new SelectListItem { Text = "Nebraska", Value = "Nebraska"},
                    new SelectListItem { Text = "Nevada", Value = "Nevada"},
                    new SelectListItem { Text = "New Hampshire", Value = "New Jersey"},
                    new SelectListItem { Text = "New Mexico", Value = "New Mexico"},
                    new SelectListItem { Text = "New York", Value = "New York"},
                    new SelectListItem { Text = "North Carolina", Value = "North Carolina"},
                    new SelectListItem { Text = "North Dakota", Value = "North Dakota"},
                    new SelectListItem { Text = "Ohio", Value = "Ohio"},
                    new SelectListItem { Text = "Oklahoma", Value = "Oklahoma"},
                    new SelectListItem { Text = "Oregon", Value = "Oregon"},
                    new SelectListItem { Text = "Pennsylvania", Value = "Pennsylvania"},
                    new SelectListItem { Text = "Rhode Island", Value = "Rhode Island"},
                    new SelectListItem { Text = "South Carolina", Value = "South Carolina"},
                    new SelectListItem { Text = "South Dakota", Value = "South Dakota"},
                    new SelectListItem { Text = "Tennessee", Value = "Tennessee"},
                    new SelectListItem { Text = "Texas", Value = "Texas"},
                    new SelectListItem { Text = "Utah", Value = "Utah"},
                    new SelectListItem { Text = "Vermont", Value = "Vermont"},
                    new SelectListItem { Text = "Virginia", Value = "Virginia"},
                    new SelectListItem { Text = "Washington", Value = "Washington"},
                    new SelectListItem { Text = "West Virginia", Value = "West Virginia"},
                    new SelectListItem { Text = "Wisconsin", Value = "Wisconsin"},
                    new SelectListItem { Text = "Wyoming", Value = "Wyoming"}

                };
            }
        }

        public async Task<IActionResult> AsyncOnPost(Info CreditCardEntryInfo)
        {
            if (ModelState.IsValid)
            {
                ModelState.AddModelError("Information.FirstName", "Invalid login");
                Console.Out.Write("Model is fine!");
                return Page();
            }

            return Page();
        }



    }
}


使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Authorization;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.RazorPages;
使用Microsoft.AspNetCore.Mvc.Rendering;
cloud.Views.PaymentPage中的命名空间
{
[异名]
公共类CreditCardEntryModel:PageModel
{
公共异步任务OnGetAsync()
{
如果(!string.IsNullOrEmpty(ErrorMessage))
{
AddModelError(string.Empty,ErrorMessage);
}
}
public CreditCardEntryModel()
{
信息=新信息()
{ 
FirstName=“”,
LastName=“”,
AddressLine1=“”,
地址行2=“”,
城市=”,
State=“”,
Zip=“”,
CCNumber=“”,
CCExpiDate=“”,
CVCCode=“”
};
}
[BindProperty]
公共信息信息{get;set;}
[临时数据]
公共字符串错误消息{get;set;}
公共类信息
{
[必需]
公共字符串名{get;set;}
[必需]
公共字符串LastName{get;set;}
公共字符串AddressLine1{get;set;}
公共字符串AddressLine2{get;set;}
公共字符串City{get;set;}
公共字符串状态{get;set;}
公共字符串Zip{get;set;}
公共字符串CCNumber{get;set;}
公共字符串CCExpiDate{get;set;}
公共字符串CVCCode{get;set;}
}
公共IEnumerable状态列表
{
得到
{
返回新列表
{
新建SelectListItem{Text=“Alabama”,Value=“Alabama”},
新建SelectListItem{Text=“阿拉斯加”,Value=“阿拉斯加”},
新建SelectListItem{Text=“Arizona”,Value=“Arkansas”},
新建SelectListItem{Text=“California”,Value=“California”},
新建SelectListItem{Text=“Colorado”,Value=“Colorado”},
新建SelectListItem{Text=“Conneticut”,Value=“Conneticut”},
新建SelectListItem{Text=“特拉华”,Value=“特拉华”},
新建SelectListItem{Text=“哥伦比亚特区”,Value=“哥伦比亚特区”},
新建SelectListItem{Text=“Florida”,Value=“Florida”},
新建SelectListItem{Text=“Georgia”,Value=“Georgia”},
新建SelectListItem{Text=“夏威夷”,Value=“夏威夷”},
新建SelectListItem{Text=“Idaho”,Value=“Idaho”},
新建SelectListItem{Text=“Illinois”,Value=“Illinois”},
新建SelectListItem{Text=“Indiana”,Value=“Indiana”},
新建SelectListItem{Text=“Iawa”,Value=“Iawa”},
新建SelectListItem{Text=“Kansas”,Value=“Kansas”},
新建SelectListItem{Text=“Kentucky”,Value=“Kentucky”},
新建SelectListItem{Text=“路易斯安那”,Value=“路易斯安那”},
新建SelectListItem{Text=“Maine”,Value=“Maine”},
新建SelectListItem{Text=“Maryland”,Value=“Maryland”},
新建SelectListItem{Text=“Massachusetts”,Value=“Massachusetts”},
新建SelectListItem{Text=“Michigan”,Value=“Michigan”},
新建SelectListItem{Text=“明尼苏达”,Value=“明尼苏达”},
新建SelectListItem{Text=“Missippi”,Value=“Arkansas”},
新建SelectListItem{Text=“Missouri”,Value=“Missouri”},
新建SelectListItem{Text=“Montana”,Value=“Montana”},
新建SelectListItem{Text=“Nebraska”,Value=“Nebraska”},
新建SelectListItem{Text=“Nevada”,Value=“Nevada”},
新建SelectListItem{Text=“new Hampshire”,Value=“new Jersey”},
新建SelectListItem{Text=“new Mexico”,Value=“new Mexico”},
新建SelectListItem{Text=“new York”,Value=“new York”},
新建SelectListItem{Text=“North Carolina”,Value=“North Carolina”},
新建SelectListItem{Text=“North Dakota”,Value=“North Dakota”},
新建SelectListItem{Text=“Ohio”,Value=“Ohio”},
新建SelectListItem{Text=“Oklahoma”,Value=“Oklahoma”},
新建SelectListItem{Text=“Oregon”,Value=“Oregon”},
新建SelectListItem{Text=“Pennsylvania”,Value=“Pennsylvania”},
新建SelectListItem{Text=“罗德岛”,Value=“罗德岛”},
新建SelectListItem{Text=“South Carolina”,Value=“South Carolina”},
新建SelectListItem{Text=“South Dakota”,Value=“South Dakota”},
新建SelectListItem{Text=“Tennessee”,Value=“Tennessee”},
新建SelectListItem{Text=“Texas”,Value=“Texas”},
新建SelectListItem{Te
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;

namespace InTheCloud.Views.PaymentPage
{
    [AllowAnonymous]
    public class CreditCardEntryModel : PageModel
    {
        public async Task OnGetAsync()
        {
            if (!string.IsNullOrEmpty(ErrorMessage))
            {
                ModelState.AddModelError(string.Empty, ErrorMessage);
            }

        }

        public CreditCardEntryModel()
        {

            Information = new Info()
            { 
            FirstName= "",
            LastName = "",
            AddressLine1 = "",
            AddressLine2 = "",
            City = "",
            State = "",
            Zip = "",
            CCNumber = "",
            CCExpiDate = "",
            CVCCode = ""
            };

    }

        [BindProperty]
        public Info Information { get; set; }

        [TempData]
        public string ErrorMessage { get; set; }

        public class Info
        {
            [Required]
            public String FirstName { get; set; }

            [Required]
            public String LastName { get; set; }

            public String AddressLine1 { get; set; }

            public String AddressLine2 { get; set; }

            public String City { get; set; }

            public String State { get; set; }

            public String Zip { get; set; }

            public String CCNumber { get; set; }

            public String CCExpiDate { get; set; }

            public String CVCCode { get; set; }

        }

        public IEnumerable<SelectListItem> StatesList
        {
            get
            {
                return new List<SelectListItem>
                {
                    new SelectListItem { Text = "Alabama", Value = "Alabama"},
                    new SelectListItem { Text = "Alaska", Value = "Alaska"},
                    new SelectListItem { Text = "Arizona", Value = "Arkansas"},
                    new SelectListItem { Text = "California", Value = "California"},
                    new SelectListItem { Text = "Colorado", Value = "Colorado"},
                    new SelectListItem { Text = "Conneticut", Value = "Conneticut"},
                    new SelectListItem { Text = "Delaware", Value = "Delaware"},
                    new SelectListItem { Text = "District of Columbia", Value = "District of Columbia"},
                    new SelectListItem { Text = "Florida", Value = "Florida"},
                    new SelectListItem { Text = "Georgia", Value = "Georgia"},
                    new SelectListItem { Text = "Hawaii", Value = "Hawaii"},
                    new SelectListItem { Text = "Idaho", Value = "Idaho"},
                    new SelectListItem { Text = "Illinois", Value = "Illinois"},
                    new SelectListItem { Text = "Indiana", Value = "Indiana"},
                    new SelectListItem { Text = "Iowa", Value = "Iowa"},
                    new SelectListItem { Text = "Kansas", Value = "Kansas"},
                    new SelectListItem { Text = "Kentucky", Value = "Kentucky"},
                    new SelectListItem { Text = "Louisiana", Value = "Louisiana"},
                    new SelectListItem { Text = "Maine", Value = "Maine"},
                    new SelectListItem { Text = "Maryland", Value = "Maryland"},
                    new SelectListItem { Text = "Massachusetts", Value = "Massachusetts"},
                    new SelectListItem { Text = "Michigan", Value = "Michigan"},
                    new SelectListItem { Text = "Minnesota", Value = "Minnesota"},
                    new SelectListItem { Text = "Missisippi", Value = "Arkansas"},
                    new SelectListItem { Text = "Missouri", Value = "Missouri"},
                    new SelectListItem { Text = "Montana", Value = "Montana"},
                    new SelectListItem { Text = "Nebraska", Value = "Nebraska"},
                    new SelectListItem { Text = "Nevada", Value = "Nevada"},
                    new SelectListItem { Text = "New Hampshire", Value = "New Jersey"},
                    new SelectListItem { Text = "New Mexico", Value = "New Mexico"},
                    new SelectListItem { Text = "New York", Value = "New York"},
                    new SelectListItem { Text = "North Carolina", Value = "North Carolina"},
                    new SelectListItem { Text = "North Dakota", Value = "North Dakota"},
                    new SelectListItem { Text = "Ohio", Value = "Ohio"},
                    new SelectListItem { Text = "Oklahoma", Value = "Oklahoma"},
                    new SelectListItem { Text = "Oregon", Value = "Oregon"},
                    new SelectListItem { Text = "Pennsylvania", Value = "Pennsylvania"},
                    new SelectListItem { Text = "Rhode Island", Value = "Rhode Island"},
                    new SelectListItem { Text = "South Carolina", Value = "South Carolina"},
                    new SelectListItem { Text = "South Dakota", Value = "South Dakota"},
                    new SelectListItem { Text = "Tennessee", Value = "Tennessee"},
                    new SelectListItem { Text = "Texas", Value = "Texas"},
                    new SelectListItem { Text = "Utah", Value = "Utah"},
                    new SelectListItem { Text = "Vermont", Value = "Vermont"},
                    new SelectListItem { Text = "Virginia", Value = "Virginia"},
                    new SelectListItem { Text = "Washington", Value = "Washington"},
                    new SelectListItem { Text = "West Virginia", Value = "West Virginia"},
                    new SelectListItem { Text = "Wisconsin", Value = "Wisconsin"},
                    new SelectListItem { Text = "Wyoming", Value = "Wyoming"}

                };
            }
        }

        public async Task<IActionResult> AsyncOnPost(Info CreditCardEntryInfo)
        {
            if (ModelState.IsValid)
            {
                ModelState.AddModelError("Information.FirstName", "Invalid login");
                Console.Out.Write("Model is fine!");
                return Page();
            }

            return Page();
        }



    }
}


@page
@model InTheCloud.Views.PaymentPage.CreditCardEntryModel;
@{ ViewData["Title"] = "Home Page";}

<head>
    <link rel="stylesheet" type="text/css" href="~/css/indexstylesheet.css">
</head>
<div class="row">
    <div class="col" style="border-right:solid; border-right-width:thin; border-right-color:lightgray; width: 20%;">
        <div class="salesitems">
            <span style="font-family:cursive; font-size:xx-large;">$0.99</span> <span style="font-family:cursive; font-size:x-large;">/mo.</span><br />
            <div style="background-color:#fecc06;" width="100%"><span style="font-family:cursive ;font-size:xx-large; color:white;">50 GB</span></div>
            <div style="text-align: left !important; padding-left:5pt; padding-right:5pt; min-height:133pt;">
                <span style="text-align:left; font-family:'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif">
                    -Optional File Encryption<br />
                    -Secure File Transfers<br />
                    -Apps for Access from any Device<br />
                    -Simplest to Use<br />
                    -Redundancy for Data Recovery
                </span>
            </div>
            <div style="position:absolute; height:40pt; padding-top:4pt; width:100%; background-color:lightgray; font-family:cursive; font-size:xx-large; text-align:center; color:black; border-bottom-left-radius:5pt; border-bottom-right-radius:5pt;">Choose</div>
        </div>
    </div>
    <div class="col" style="margin: 10pt;">
        <form method="post" id="Information">
            <div class="form-group row">
                <label asp-for="Information.FirstName" class="col-sm-2 col-form-label"></label>
                <div class="col-sm-10">
                    <input asp-for="Information.FirstName" class="form-control" />
                </div>
                <div class="col-sm-10">
                    <span asp-validation-for="Information.FirstName" class="text-danger">Hello</span>
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.LastName" class="col-sm-2 col-form-label">Last Name</label>
                <div class="col-sm-10">
                    <input asp-for="Information.LastName" class="form-control" placeholder="Last" />
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.AddressLine1" class="col-sm-2 col-form-label">Street</label>
                <div class="col-sm-10">
                    <input asp-for="Information.AddressLine1" class="form-control" placeholder="Street and Number" /><br />
                    <input asp-for="Information.AddressLine2" class="form-control" placeholder="" />
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.City" class="col-sm-2 col-form-label">City</label>
                <div class="col-sm-10">
                    <input asp-for="Information.City" class="form-control" placeholder="City" />
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.State" class="col-sm-2 col-form-label">State</label>
                <div class="col-sm-10">
                    @Html.DropDownListFor(model => model.Information.State, Model.StatesList, new { @class = "form-control" });

                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.CCNumber" class="col-sm-2 col-form-label">Credit Card Number</label>
                <div class="col-sm-10">
                    <input asp-for="Information.CCNumber" class="form-control" placeholder="Card Number" />
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.CCExpiDate" class="col-sm-2 col-form-label">Expiration Date</label>
                <div class="col-sm-10">
                    <input asp-for="Information.CCExpiDate" class="form-control" placeholder="mm/yy" />
                </div>
            </div>
            <div class="form-group row">
                <label asp-for="Information.CVCCode" class="col-sm-2 col-form-label">CVC</label>
                <div class="col-sm-10">
                    <input asp-for="Information.CVCCode" class="form-control" placeholder="CVC" />
                </div>
            </div>
            <div class="form-group row">
                <label class="col-sm-2 col-form-label"></label>
                <div class="col-sm-10">
                    <button type="submit" class="btn primary-btn">submit</button>
                </div>
            </div>
        </form>
    </div>
</div>