如何将值绑定到类属性?
Posted
技术标签:
【中文标题】如何将值绑定到类属性?【英文标题】: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
类?
【问题讨论】:
AFAIK 在@code
部分中,您将放置页面的成员,而不是类定义。查看来自 Microsoft 的 ASP.NET Core Blazor data binding 文档
【参考方案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 无论如何都会在幕后做一些事情来实例化它。
在哪里定义类没有区别。类定义只是一个模板,您必须始终创建类的实例。不知道为什么你做了什么,没有导致编译错误......以上是关于如何将值绑定到类属性?的主要内容,如果未能解决你的问题,请参考以下文章
Flex 警告:无法绑定到类“Object”上的属性“foo”(类不是 IEventDispatcher)
使用 RxSwift 将多个 UITextField 绑定到类道具