我的代码有问题,页面加载时我的
OnGet()
方法没有被调用。现在我可能对 OnGet()
方法应该如何工作是错误的,但我似乎无法找出至少一个解决方法。这是我的 Index.cshtml.cs 文件:
using System;
using System.Collections;
using System.Linq;
using System.Dynamic;
using Microsoft.AspNetCore.Mvc.Razor;
using SafetyApp.Services;
namespace SafetyApp.Pages
{
public class IndexModel : PageModel
{
private readonly SafetyService _safety;
public IndexModel(SafetyService safety)
{
_safety = safety;
}
public void OnGet()
{
var inspectionType = _safety.GetInspectionType();
}
}
}
如您所见,我有一个安全类的构造函数,并且我设置了一个等于该方法结果的变量。感谢您对我遇到的这个问题的任何见解。
如何在页面加载时初始化类。 (ASP.Net Core(剃刀 页数))
我的代码有问题,我的 OnGet() 方法没有被执行 页面加载时调用。现在我对 OnGet() 的理解可能是错误的 方法应该有效,但我似乎无法弄清楚 至少需要解决。这是我的 Index.cshtml.cs 文件。
嗯,根据您共享的代码片段和描述,您似乎没有以正确的方式调用
OnGet
,您也应该更好地分享您的观点。因为如何初始化视图很重要,所以OnGet
。
但是,我调查了您的代码,并根据您共享的代码片段,您的视图中应该有以下代码才能调用您的服务方法。
安全服务演示详情:
假设您有以下详细信息
SafetyService
public class SafetyService
{
private readonly List<string> _inspectionTypes;
public SafetyService()
{
_inspectionTypes = new List<string>
{
//Demo Inspection type
"Fire Safety Inspection",
"Health and Safety Inspection",
"Building Safety Inspection",
"Electrical Safety Inspection",
"Workplace Safety Inspection"
};
}
public List<string> GetInspectionType()
{
return _inspectionTypes.ToList();
}
}
索引型号:
public class IndexModel : PageModel
{
private readonly SafetyService _safety;
public IndexModel(SafetyService safety)
{
_safety = safety;
}
public List<string> InspectionType { get; private set; }
public void OnGet()
{
InspectionType = _safety.GetInspectionType();
}
}
注意: 正如您所注意到的,我引入了一个变量
InspectionType
类型的 List<string>
,我将在视图中使用它来调用 SafetyService
和 OnGet
方法。
查看:
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<h1>Inspection Types</h1>
<ul>
@foreach (var type in Model.InspectionType)
{
<li>@type</li>
}
</ul>
输出:
注意:如果您想了解更多详细信息,请参考此官方文档,我们应该如何在veiw中初始化razor方法或与razor页面相关的任何内容。