【问题标题】:Can't access variables inside same block of code in Blazor无法访问 Blazor 中同一代码块内的变量
【发布时间】:2022-01-24 00:23:06
【问题描述】:

我知道这是基本的,但我是 Blazor 的新手,我不明白这个概念,为什么我不能访问这个变量。如果这是这样的,那么这样做有什么好处。代码在一个块内,我无法访问测试。

@code{
    Service.Service1Client Client = new Service.Service1Client();
    int Test = 4;
    Test++;
}

【问题讨论】:

  • 您遇到什么错误?问题尚不清楚,第二段代码(来自您的图片)的相关性也不清楚。
  • 在您的 @code 块中看不到 employee 变量。Test++ 放错了位置。从概念上讲,您在class 那里;你不能运行语句,只能声明变量和方法
  • 我的床我修好了。错误是“测试不存在”

标签: c# blazor


【解决方案1】:

想象一下@code{ 改为class{。这不是有效的 C#:

class Something{

  int Test = 4;   //declares a class level variable called Test - not perfect, because it's a private field and shouldnt have a pascalCase name, but.. it works
  Test++;         //can't run code like that in a class level context

您必须在方法中执行 Test++(可能将按钮放入标记中,在类中放入 onclick="@SomeMethodName" 并在类中放入 private void SomeMethodName(){ Test++; }。Counter razor 示例中应该有一些有用的代码

你也可以这样做(我经常这样做,因为智能感知在 VS2019 中工作得更好):

假设您在解决方案资源管理器中:

Pages
+-- MyPage.razor

您可以在 Pages 文件夹中添加一个名为 MyPage.razor.cs 的类

Pages
+-- MyPage.razor
    +-- MyPage.razor.cs

它被放置为 MyPage.razor 的子项

打开课程并确保它显示:

public partial class MyPage{

}

现在您可以在其中编写代码,而不是在 @code{ 块中。您在普通课程中习惯的所有东西都可以在那里工作,并且标记剃须刀文件可以仅用于标记。而且最好总之,你不会在标记中有一些小的语法错误(比如太多的()破坏你的@code区域并在每一行下创建语法错误,以及各种奇怪的错误消息,比如“不包含构造函数有这么多参数” - 如果您在代码隐藏class 而不是页内@code 中工作,Intellisense 似乎工作得更好/更能容忍小错误/未完成的语句

【讨论】:

  • 好吧,这比你现在更有意义了。
猜你喜欢
  • 2023-03-28
  • 2017-12-17
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多