首页 > 解决方案 > 使用 C# 程序比较两列中的值以更新数据库中的第三列

问题描述

有四个类别(经济,技术,课外和质量)和四个类别中的每个类别下提供的几门课程。学生可以根据自己的喜好从四个类别之一中选择任何课程。他们的偏好必须与他们的历史进行比较,即。他们以前是否参加过该类别的课程,以及在内部生成并存储在数据库中的优先级以及其他值。

例如:如果一个学生已经上过技术类的课程,然后他再次选择技术,则相应的优先级为 0。而如果他以前从未上过该类别的课程,则优先级为 40。

这是我为此编写的代码,但它引发了错误,我不知道如何解决。

C#代码:

public class AddPreferenceModel : PageModel
    {

        public CUser User { get; set; }
        public CStudent Student { get; set; }
        [BindProperty]
        public CPreference Preference { get; set; }
        public COffers Offers { get; set; }

        private readonly IHostingEnvironment _environment;
        private readonly CDataContext _context;
        private readonly IEmailService _emailServices;
        private readonly IUserService _UserService;

        public AddPreferenceModel(IUserService UserService, CDataContext context, IHostingEnvironment IHostingEnvironment, IUserService IUserService, IEmailService emailService)
        {
            _environment = IHostingEnvironment;
            _ntUserService = ntUserService;
            _context = context;
            _emailServices = emailService;

            User = _UserService.GetUser();
        }

        public CHistory History { get; set; }
        public IList<CPreference> Pref { get; set; }
        public IList<CHistory> Hist { get; set; }
        public IList<COffers> Off { get; set; }
        public IList<CStudent> stud { get; set; }

        public ActionResult OnGet()           
        {
            if (User.Role != Role.Admin && User.Role != Role.Student)
            {
                return RedirectToPage("/Denied");
            }

            return Page();
        }

        [HttpPost]
        public async Task<IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return Page();
            }

             if(Preference.Category == History.History)
                    {
                        Preference.Priopoints = Priopoints.zero;
                        _context.Preference.Add(Preference);
                        await _context.SaveChangesAsync();

                    }
              else
                    {
                        Preference.Priopoints = Priopoints.high;

                        _context.Preference.Add(Preference);
                        await _context.SaveChangesAsync();
                    }
                }
            }

            return RedirectToPage("IndexPref");
        }
    }

我在 if(Preference.Category == History.History)

错误是

System.NullReferenceException:“对象引用未设置为对象的实例。”

我正在使用 C#(剃须刀页面)开发 .net 框架。任何有关如何即兴创作或纠正错误的帮助将不胜感激。

编辑:HTML代码

<div class="Custom-Content Custom-Max-Width-800">
    <h2 class="h2">Add your preference</h2>
    <form enctype="multipart/form-data" id="orderForm" method="post">
        <div class="col-md-12"><hr /></div>
        <h4 class="h4 Custom-H4-Less-Margin-Bottom">Preference</h4>
        <div class="Custom-Form col-sm-6">
            NTUser
            <input asp-for="Preference.StudentUser" type="text" value="" required="" />
        </div>

        <div class='col-md-12'><hr /></div>
        <div class="Custom-Form col-sm-4">
            Course Name
            <input asp-for="Preference.name" type="text" value="" required="" />
        </div>
        <div class="Custom-Form col-sm-4">
            Category
            <select asp-for="Preference.Category" required>
                <option value="Wirtschaft">Wirtschaft</option>
                <option value="Technik">Technik</option>
                <option value="Qualität">Qualität</option>
                <option value="Überfachlich">Überfachlich</option>
            </select>
        </div>
        <div class="Custom-Form col-sm-4">
            Priority
            <select asp-for="Preference.Priority" required>
                <option value="High">High</option>
                <option value="Medium">Medium</option>
                <option value="Low">Low</option>
            </select>
        </div>

标签: c#.net-corecomparisonrazor-pages

解决方案


推荐阅读