我在用剃刀页面(ASP.Net核2.0)的服务器端验证问题
我有一个创建一个记录页面
HTTP://本地主机:56876 /只/创建雇员= 112345
我的隐藏文件使用onGET代码如下所示:
[BindProperty]
public EntryLog EntryLog { get; set; }
public Employee Employee{ get; set; }
public string empID { get; set; }
public IActionResult OnGet(string employeeID)
{
empID = employeeID;
// for Selects for lookup tables
ViewData["ReasonId"] = new SelectList(_context.Reason, "Id", "Name");
ViewData["ReasonTypeId"] = new SelectList(_context.ReasonType, "Id", "Name");
return Page();
}
上面的代码只是正常工作和客户验证的作品完美,但我有业务逻辑校验,如果入学日期为今天的日期,我不应该让被保存条目聘请日期间90。
public async Task<IActionResult> OnPostAsync()
{
//Lookup current employeeID hiredDate. if is new employee do not continue.
Employee = await _context.Employee .FirstOrDefaultAsync(p => p.Id == EntryLog.EmployeeID);
//Server side validation
var age = DateTime.Today.Day - Employee.HireDate.Day;
if (age <= 90)
{
ModelState.AddModelError("NewEmp", "Emp is New Warning");
return Page();
}
if (!ModelState.IsValid)
{
return Page();
}
_context.EntryLog.Add(EntryLog);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
我的服务器端验证工作,但问题是,当我返回页面(); 该表格被刷新,并且两个选择元素得到空出和雇员元素获得空出来为好。
我的猜测是,返回页面()上OnPostAsync()不调用使用onGET()方法。
我怎样才能让网页,因为它是没有松动的信息?