天天看点

深入浅出Blazor webassembly之数据绑定写法

⒈ 单向绑定

在razor 模版中, 直接使用 @variable,  其中variable 为 C#属性或类字段, 这样的写法是单向绑定, 即按照C#字段变化后, DOM上的内容也会更新.

深入浅出Blazor webassembly之数据绑定写法

 2. 双向绑定

  (1) 对于输入类html组件, 可以实现双向绑定, 但需要加上 @bind 指令.

  (2) 如果没有指定关联的事件名, 默认关联的事件是失去焦点事件, 指定事件名的写法是 @bind:event

  (3) 在使用了 @bind 之后, 我们不应再实现绑定事件代码, 因为 blazor 会自动生成该事件的代码.

  (4) @bind 其实是 @bind-value 的缩写形式, 但如果绑定变量写成了 @bind-value, 指定事件名也需要写成 @bind-value:event, 也就是说指定事件名要和绑定变量的写法完全一致, 否则会在编译期或运行时报错.

深入浅出Blazor webassembly之数据绑定写法

3. 绑定变量的字符格式化

可以使用 @bind:format 指定格式化要求

深入浅出Blazor webassembly之数据绑定写法

 4.  Razor 模版中的 literal, expression 和 directive

 (1) directive 一般是作为html元素 key-value 中的 key, 比如 @bind="aaaa" 中的 @bind,  directive 比较好记, 就那么几个.

     html元素 key-value 中的 value,  既可以是 literal , 也可以是 expression, 具体区分方法:

         如果取值的双引号带有@前缀, 即被认为是 expression

         如果取值的双引号内如果没有@前缀, 一般是 literal;

         但也有例外, 比如 @bind="aaaa" 的aaa因为是双向绑定, 肯定是变量, 不是literal;  @onclick="bbb"  , bbb肯定是事件, 所以也不是 literal. 也就是说, 这里value中的@符号可以省略

深入浅出Blazor webassembly之数据绑定写法

(2)  复杂表达式需要加上括号, 即格式为:  @(expression)    

甚至函数调用也可以.

深入浅出Blazor webassembly之数据绑定写法

 (3)   blazor模版的表达式还可以是lambda 表达式.

深入浅出Blazor webassembly之数据绑定写法

参考:

Event Handling In Blazor (c-sharpcorner.com) https://www.c-sharpcorner.com/article/event-handling-in-blazor/