c# - 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; }
}
}
我不能告诉我哪里错了?
非常感谢,
解决方案
这是因为 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>
}
推荐阅读
- arduino - 使用带有 LSBFIRST 位顺序的 shiftOut() 将数据发送到 Arduino 中的 MAX7219
- javascript - 如何从多维数组创建 [12,24, 13,21]
- sql - Postgres:我怎样才能制作一个 JOIN/Junction 表,其中引用 * 一个 * 两个其他表?
- amazon-s3 - 使用 pyspark 以编程方式从 S3 存储桶中删除镶木地板分区
- typescript - 带有泛型的 TypeScript 中的递归对象文字
- php - PHP:数组值的比较不起作用?
- javascript - Return 语句导致:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions
- python - 在我的 Mac OS 升级后如何恢复我的 Python cron 作业?
- javascript - Django、Ajax 和 JS 。提交评论时如何防止页面重新加载并跳转到页面顶部
- javascript - 在主键和外键上组合两个数组