.NET 5 Razor Page OnGet() not firing



只是一个基本的Razor页面,用于添加员工,但是OnGet()在页面加载时没有触发/被击中。我在"Managers = new SelectList"中设置了一个断点进行测试。线,但它从来没有被击中。我错过了什么?

public IActionResult OnGet()
{
if ((Request.Cookies["Admin"] != null) && (Request.Cookies["Admin"] == "True"))
{
ModelState.Clear();
List<Employee> managers = _merchDAL.GetManagers();
Managers = new SelectList(managers, nameof(Employee.FirstName), nameof(Employee.FirstName), null, nameof(Employee.Department));
}
else
{
RedirectToPage("../Home");
}
return Page();
}

页面上的控件是:

<div class="form-group row">
<div class="col-3">
<label asp-for="employee.Manager"></label>
</div>
<div class="col-6">
<select asp-for="employee.Manager" class="form-control" asp-items="Model.Managers"> </select>
</div>
<span asp-validation-for="employee.Manager" class="text-danger"</span>
</div>

编辑

通过点击"添加员工"按钮加载页面。按钮在"管理员工"页面。

<button asp-page="AdminAddEmployee" class="btn btn-primary">Add Employee</button>.  

没有导致OnGet()触发。解决它的方法是将其更改为:

<a asp-page="AdminAddEmployee" class="btn btn-primary">Add Employee</a>

OnGet()不触发POST请求。如果您需要在GET和POST请求中同时执行代码,那么您可以将其放在一个方法中,并从两个方法中调用该方法。

我知道这篇文章很老了,但我只是想让大家从我最近的头痛中解脱出来…

在将MVC项目。net框架转换为Razor Pages。net 7时,我犯了一个"MVC思维"错误,而不是在Index.cshtml页面中引用@model IndexModel,我直接引用了我的模型类(+必要的@using)

@page "{id}"
@using WBTCore.Models.CustomModels;
@model AthleteModel

结果是,对应的Index.cshtml.cs中没有OnGet()/OnGetAsync()被调用,page抛出了一个null异常。

最新更新