如何在页面加载时初始化类。 (ASP.Net Core(Razor 页面))

问题描述 投票:0回答:1

我的代码有问题,页面加载时我的

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();
        } 
    }
}

如您所见,我有一个安全类的构造函数,并且我设置了一个等于该方法结果的变量。感谢您对我遇到的这个问题的任何见解。

c# .net asp.net-mvc asp.net-core razor-pages
1个回答
0
投票

如何在页面加载时初始化类。 (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>

输出:

enter image description here

enter image description here

注意:如果您想了解更多详细信息,请参考此官方文档,我们应该如何在veiw中初始化razor方法或与razor页面相关的任何内容

© www.soinside.com 2019 - 2024. All rights reserved.