【问题标题】:How to bind a value to a class property?如何将值绑定到类属性?
【发布时间】:2022-01-01 17:25:24
【问题描述】:

我是 Web 开发新手,也是 C#/Blazor 新手。

因此,我正在从事我的一个宠物项目。在这个项目中,我有一个页面,我希望用户在其中输入一些数字。

我想动态地将这些值绑定到一个类,然后使用该类执行计算并动态显示这些结果,以便用户更改输入后,无需单击即可更新结果“提交”按钮或类似的东西。因此,基本想法是拥有某种实时计算器。

我正在使用 MudBlazor 框架来加快速度。 这是我位于Pages/Project.razor 的起始代码:

<MudItem xs="12" sm="6" md="4">
  <MudNumericField @bind-Value="Project.NumDays" Label="Number of days" Variant="Variant.Text" Min="0" Max="10000" />
</MudItem>

@code {
  public class Project
  {
    public string NumDays // property
    { get; set; }
  }
}

现在,应用程序声明它无法识别 Project 类。 我怎样才能达到我想要的?这可能吗 ?还是我需要在Pages 目录之外定义Project 类?

【问题讨论】:

标签: c# blazor asp.net-blazor


【解决方案1】:

您必须实例化 Project 类...您不能将类定义标识符用作 @bind-Value 指令属性的值。这样做:

Project project = new Project();

您的代码应如下所示:

<MudItem xs="12" sm="6" md="4">
  <MudNumericField @bind-Value="project.NumDays" Label="Number of days" Variant="Variant.Text" Min="0" Max="10000" />
</MudItem>


@code {
    Project project = new Project();

  public class Project
  {
    public string NumDays { get; set; } // property
    
  }
}

请注意,项目实例以小写p开头

【讨论】:

  • 我在位于Data 目录中的一个单独的.cs 文件中定义了Project 类,它无需实例化即可工作。我认为 blazor 无论如何都会在幕后做一些事情来实例化它。
  • 在哪里定义类没有区别。类定义只是一个模板,您必须始终创建类的实例。不知道为什么你做了什么,没有导致编译错误......
猜你喜欢
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2017-05-26
  • 2013-12-19
相关资源
最近更新 更多