Blazor-Get&Set

@bind可以实现双向绑定,有时候我们可能需要处理一些逻辑,这时候我们可以将set和get分开来进行绑定,使用@bind:get@bind:set来实现,进行分别处理。
@bind:get指定要绑定的字段,属性
@bind:set指定给字段,属性设置值的回调,绑定c#方法
@bind一致,@bind:set也默认使用onchange事件

分别绑定

下面我们通过一段示例来看看具体的用法,我们分别绑定set和get

@page "/injectPage"
@rendermode InteractiveAuto
@inject ILogger<InjectPage> logger;
<h3>InjectPage</h3>
<input @bind:set="SetName" @bind:get="name"></input>
<p>@name</p>
@code {
    string? name = "张三";
    void SetName(string? name){
        this.name = name;
    }    
}

这段代码实现了基本的功能,和@bind的功能是一致的,下面我们添加一些逻辑看看结果如何

@page "/injectPage"
@rendermode InteractiveAuto
@inject ILogger<InjectPage> logger;
<h3>InjectPage</h3>
<input @bind:set="SetName" @bind:get="name"></input>
<p>@name</p>
@code {
    string? name = "张三";
    void SetName(string? name){
        this.name = "姓名:"+ name;
    }    
}

我们让每次输入名称后添加“姓名:”的前缀,看看能否实现
在这里插入图片描述

看看效果,功能是可以正常实现的。

绑定属性

我们也可以直接绑定属性,在属性中实现get,set方法

@page "/injectPage"
@rendermode InteractiveAuto
@inject ILogger<InjectPage> logger;
<h3>InjectPage</h3>
<input @bind="Name"></input>
<p>@name</p>
@code {
    string? name = "张三";
    string? Name{
        get{
            return name;
        }
        set{
            this.name = "姓名:" + name;
        }
    }
}

这段代码可以获得和分别绑定一样的效果

### Blazor 中实现 MVVM 模式的概述 Blazing.MVVM 提供了一种简单的方法,在 Blazor 应用程序中实施 MVVM 架构模式[^1]。此库不仅简化了 ViewModel 和 View 之间的交互,而且提供了诸如命令绑定、属性更改通知等功能。 对于希望从 Xamarin 或 WPF 迁移到 Blazor 的开发者来说,过渡过程相对平滑,因为这些平台都遵循相似的设计理念。此外,MvvmBlazor 是另一个专注于为 Blazor WebAssembly 及服务器端应用提供 MVVM 支持的开源项目,其目标是加速开发流程并降低配置复杂度[^2]。 #### 创建简单的 Blazor MVVM 应用实例 为了更好地理解如何在 Blazor 中运用 MVVM 设计模式,这里展示一个基本的应用案例: ##### 安装必要的 NuGet 包 首先需要引入 `Microsoft.Toolkit.Mvvm` 到项目里,这可以通过 Visual Studio 的 NuGet 包管理器完成操作[^4]: ```bash Install-Package Microsoft.Toolkit.Mvvm ``` 接着添加命名空间声明以便访问所需 API: ```csharp using Microsoft.Toolkit.Mvvm; ``` ##### 定义 ViewModel 类 创建一个新的类文件作为视图模型,并继承自 `ObservableObject` 基础类,从而获得数据绑定能力。在此基础上定义公开属性用于界面元素的数据交换: ```csharp public class MainViewModel : ObservableObject { private string _message; public string Message { get => _message; set => SetProperty(ref _message, value); } } ``` ##### 配置服务注册表 为了让 Views 能够轻松获取到对应的 ViewModels 实例,需修改 Startup.cs 文件中的 ConfigureServices 方法来注册单例对象: ```csharp services.AddSingleton<MainViewModel>(); ``` ##### 绑定 Razor 页面与 ViewModel 最后一步是在 .razor 文件内设置 DataContext 属性指向已注入的服务类型,这样就可以直接利用 @bind-value 特性来进行双向绑定了: ```html @page "/" @inject MainViewModel ViewModel <h3>Message:</h3> <input type="text" @bind-value="ViewModel.Message"/> <p>@ViewModel.Message</p> ``` 以上就是构建基于 MVVM 结构的 Blazor 应用的基本步骤。通过这种方式可以使前端逻辑更加清晰有序,同时也提高了代码可维护性和重用率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code-Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值