c# - 使用 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>
解决方案
推荐阅读
- python - 仅从两个 CSS 文件中提取不同的规则
- google-api - 列出对象时缺少 owner.entityId 字段
- html - 如何使用 CSS 网格制作分成 2 个自动宽度列的垂直菜单?
- ios - SwiftUI DatePicker 在关闭时触发触摸事件
- pytorch - 在 padsquare 之后使用单个值调整大小(来自 augly)给出 RuntimeError: stack expects each tensor to be equal size
- typescript - 将experimentalDecorators设置为true后仍然有错误
- pine-script - Pine Editor 中的 Copy lines up/down 热键在我的 Mac 上不起作用
- php - 如何使用 symfony 4 在子实体上应用 SoftDeletable
- c# - ML.net 通用 CustomMapping
- c - 010 编辑器模板:将 int 转换为 wchar_t