zoukankan      html  css  js  c++  java
  • Blazor 数据绑定(4)

    点击观看视频教程

    Blazor当中, 类似实现了WPF的基础绑定功能, 支持在HTML元素当中使用Razor语法进行绑定C#字段、属性或 Razor 表达式值。

    绑定语法

    在Html标签中,使用Razor的语法, 前缀使用@符号, 然后添加 @bind="xxxx" 即可实现最简单的绑定, 如下:

    input @bind="Name" />
    
    @code {
        private string Name{ get; set; }
    }
    

    通过上面的操作, Input中的值与属性Name则进行了一个双向绑定, 无论是Name主动发生变更, 还是Input的值发生变化, 两者都会同时更新。

    通过@bind的声明与 value="@xxx"的区别:

    @xxx/@bind区别

    value="@xxx": 只能做到属性呈现到UI元素当中, 无法与UI元素建立关系, 即: 元素发生变化并不会影响到属性变更。

    绑定对象

    下面示例演示了一个如何在html元素中的值如何绑定到一个对象的属性上。

        <input @bind="Stu.Name"/>
    
    @code{
        public Student Stu { get; set; } = new Student()
        {
            Name = "123"
        };
    
        public class Student
        {
            public string Name { get; set; }
        }
    }
    

    效果如下所示:

    数据格式化

    如果需要使用数据格式化显示, 可以通过Razor中的语法: @bind:format , 如下所示,展示了一个日期元素格式化样例:

        <input @bind="StartDate" @bind:format="yyyy-MM-dd" />
    
    @code {
        [Parameter]
        public DateTime StartDate { get; set; } = new DateTime(2020, 1, 1);
    }
    

    绑定子组件属性

    通常情况下, 对于父界面而言, 往往是由一个或者多个子组件组成 (用于提高程序的复用性), 所以父组件而言, 往往需要将父组件的参数绑定到子组件当中。
    下面的例子,演示了一个子组件当中的字符串, 如何绑定到父组件的属性上。

    声明子组件参数与回调函数

    声明了组件参数Year, 还需要声明一个组件回调函数, 该回调函数主要用于子组件的数据发生变更。
    回调函数的声明规则为, 参数类型与对应的属性一直, 名称以属性名开头

        <p>Year: @Year</p>
    
    @code {
        [Parameter]
        public int Year { get; set; }
    
        [Parameter]
        public EventCallback<int> YearChanged { get; set; }
    }
    

    父组件调用

    <ChildComponent @bind-Year="ParentYear" />
    
    @code {
        [Parameter]
        public int ParentYear { get; set; } = 1978;
    
    }
    

    无法预估的值

    当元素与属性建立了绑定关系, 但是受限于属性的类型, 如果UI元素中发生了类型不一致的变更,则在触发绑定事件时,无法分析的值会自动还原为以前的值。

    例: 当绑定的属性为Int类型时, UI元素将内容修改为string字符, 当UI元素发生事件变更时, 该值无法进行int类型的转换,则回自动还原。

  • 相关阅读:
    php责任链模式
    php工厂模式
    php观察者模式
    php单例模式
    php的抽象类
    Mysqli的常用函数
    PDO的基本操作
    算法--各种算法
    file_get_post实现post请求
    redis的5种数据结构的使用场景介绍
  • 原文地址:https://www.cnblogs.com/zh7791/p/12742466.html
Copyright © 2011-2022 走看看