首页 > 解决方案 > Blazor:名称在当前上下文中不存在

问题描述

我收到 CS0103 错误 - “当前上下文中不存在名称‘newHotel’”:

我创建了一个名为“Hotel”的类和一个名为“HotelName”的属性。
我创建了一个名为“newHotel”的变量,它的类型为 Hotel。
我已经用“天堂海滩”的值初始化了变量。

@page "/hotels"


<h3>Hotels</h3>
<p>
    Hotel Name: @newHotel.HotelName // **THIS IS WHERE THE ERROR IS SHOWN IN VS2019**
</p>

剩余代码:

@code {

    protected override void OnInitialized()
    {
        base.OnInitialized();

        Hotel newHotel = new Hotel 
        {
            HotelName = "Paradise Beach"
        };
    }

    class Hotel
    {
        public string HotelName { get; set; }
    }
}

我不能告诉我哪里错了?

非常感谢,

标签: c#blazorblazor-server-side

解决方案


这是因为 newHotel 是在 OnInit 方法中声明的局部变量,所以它超出了范围。在 newHotel 的 OnInitialized 方法上方添加一个属性。


@code {

    ///Added property
    Hotel newHotel { get; set; } = new Hotel();

    protected override void OnInitialized()
    {
        base.OnInitialized();

        newHotel = new Hotel 
        {
            HotelName = "Paradise Beach"
        };
    }

    class Hotel
    {
        public string HotelName { get; set; }
    }
}

编辑:您将遇到的下一个问题是 newHotel 的 NullReference 错误,因为页面在 OnInit 方法运行和 newHotel 初始化之前尝试呈现。一种选择是为 newHotel 添加一个空检查,另一种选择是在声明它时对其进行初始化。


@page "/hotels"


<h3>Hotels</h3>

@if(newHotel != null)
{
<p>
    Hotel Name: @newHotel.HotelName
</p>
}


推荐阅读