组件中的 Blazor 客户端 WASM 表单验证不起作用

2024-07-03

我在 Blazor WASM 客户端应用程序中从验证到正常工作时遇到问题。

将 InputText 元素封装到组件以实现紧凑布局不再执行否则正确执行的验证。

使用类似模型

public class Customer {
    [Required]
    [StringLength(100)
    public string customerName {get; set;} = "";
}

以一种形式

<EditForm Model=@customer>

<DataAnnotationsValidator />
<ValidationSummary />

<div class="form-row">

    <div class="form-group mb-0 col-sm-12">

        <div class="input-group input-group-sm mb-1 mt-1">
            <div class="input-group-prepend">
                <span class="input-group-text" style="width:6em;">Firma</span>
            </div>
            <InputText type="text" class="form-control" @bind-Value=customer.customerName />
        </div>

    </div>
</EditForm>

验证工作正常!

但为了模块化,我将内部的东西外包给一个单独的组件

@page "/inputGroup"

    <div class="input-group input-group-sm mb-1 mt-1">
        <div class="input-group-prepend">
            <span class="input-group-text" style="width:6em;">@label</span>
        </div>
        <InputText type=@type class="form-control" @bind-Value=@data @oninput=@onChange />
    </div>

@code {

    [Parameter]
    public string label {get; set;} = "Label:";

    [Parameter]
    public string type {get; set;} = "text";

    [Parameter]
    public string data {get; set;} = "";

    [Parameter]
    public EventCallback<string> dataChanged {get; set;}

    private Task onChange(ChangeEventArgs e) {

        data = (string)e.Value;
        return dataChanged.InvokeAsync(data);
    }
}

然后我把它放到我的表格中,就像

...
<div class="form-row">
    <div class="form-group mb-0 col-sm-12">
        <InputGroup label="Firma:" @bind-data=customer.customerName />
    </div>
</div>
...

验证不起作用!?


你可以在子类中做类似的事情InputText

InputTextGroup.razor

@inherits Microsoft.AspNetCore.Components.Forms.InputText

<div class="mt-1">
       <input type="text" id="@Id"
           @attributes="@AdditionalAttributes" @bind="@CurrentValueAsString"
           class="@CssClass myOtherCssClasses" />
</div>

@if (ValidationFor != null)
{
    <div class="myValidationClass">
        <ValidationMessage For="ValidationFor" />
    </div>
}

And InputTextGroup.razor.cs

public partial class InputTextGroup
{
    [Parameter] public string Id { get; set; } = HeadlessUI.HtmlElement.GenerateId();
    [Parameter] public string? Label { get; set; }
    [Parameter] public Expression<Func<string>>? ValidationFor { get; set; }
}

我从中得到了灵感所以答案 https://stackoverflow.com/a/57326353/10177987和这个微软文档 https://learn.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-5.0#inputtext-based-on-the-input-event

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组件中的 Blazor 客户端 WASM 表单验证不起作用 的相关文章

随机推荐

  • WSL2 (Ubuntu 20.04) 上的 Miniconda 失败并出现 CondaHTTPError: HTTP 000 CONNECTION FAILED

    我使用的是 Ubuntu 的 WSL2 并且想要安装 Miniconda 版本 4 9 2 安装过程很顺利 但我现在无法连接到 anaconda 来安装软件包 还有简单的命令 例如conda update conda失败与 Collecti
  • WSL2 (Ubuntu 20.04) 上的 Miniconda 失败并出现 CondaHTTPError: HTTP 000 CONNECTION FAILED

    我使用的是 Ubuntu 的 WSL2 并且想要安装 Miniconda 版本 4 9 2 安装过程很顺利 但我现在无法连接到 anaconda 来安装软件包 还有简单的命令 例如conda update conda失败与 Collecti
  • 设置默认排序规则 phpmyadmin

    我正在尝试更改 phpmyadmin 中的默认排序规则 以便当我创建表时 列的排序规则为 utf8 unicode ci 我已经尝试过以下方法 但它不起作用 mysqld collation server utf8 unicode ci c
  • 设置默认排序规则 phpmyadmin

    我正在尝试更改 phpmyadmin 中的默认排序规则 以便当我创建表时 列的排序规则为 utf8 unicode ci 我已经尝试过以下方法 但它不起作用 mysqld collation server utf8 unicode ci c
  • svg填充颜色不适用于十六进制颜色[重复]

    这个问题在这里已经有答案了 尝试创建 svg 背景图案 但是 当我不使用填充时 可以 当使用颜色名称时 例如 color red 没关系 但如果使用十六进制颜色 则不会显示任何内容 这是代码 OK background url data i
  • svg填充颜色不适用于十六进制颜色[重复]

    这个问题在这里已经有答案了 尝试创建 svg 背景图案 但是 当我不使用填充时 可以 当使用颜色名称时 例如 color red 没关系 但如果使用十六进制颜色 则不会显示任何内容 这是代码 OK background url data i
  • EMV - GPO 与 PDOL

    我正在 C 平台上工作 我想读取卡的 AFL 如果上一个命令选择 AID 不要给我 PDOL 标签 没关系 我可以毫无问题地读取 AFL 但我需要编写一个方法 无论 PDOL 是什么 都可以生成 GET PROCESSING OPTION
  • EMV - GPO 与 PDOL

    我正在 C 平台上工作 我想读取卡的 AFL 如果上一个命令选择 AID 不要给我 PDOL 标签 没关系 我可以毫无问题地读取 AFL 但我需要编写一个方法 无论 PDOL 是什么 都可以生成 GET PROCESSING OPTION
  • 如何在 Rails 中使用两个控制器和一个模型

    我有一个订单模型 客户通过 Orders 控制器与 Order 模型交互 管理员通过购买控制器与订单模型交互 大部分情况下它都有效 除了发生这种情况 管理员用户转到 new purchase path 该应用程序使用购买控制器中的 创建 操
  • 如何在 Rails 中使用两个控制器和一个模型

    我有一个订单模型 客户通过 Orders 控制器与 Order 模型交互 管理员通过购买控制器与订单模型交互 大部分情况下它都有效 除了发生这种情况 管理员用户转到 new purchase path 该应用程序使用购买控制器中的 创建 操
  • D3 检索矩形顶点以附加平行四边形(多边形)

    我的目标是绘制平行四边形 将一家公司在一个业务季度的排名与其在下一个业务季度的新排名连接起来 我使用 rects 来代表每个公司或manager 每列是一个业务季度 我的步骤 进度 used each 通过检索每个矩形来存储平行四边形顶点
  • D3 检索矩形顶点以附加平行四边形(多边形)

    我的目标是绘制平行四边形 将一家公司在一个业务季度的排名与其在下一个业务季度的新排名连接起来 我使用 rects 来代表每个公司或manager 每列是一个业务季度 我的步骤 进度 used each 通过检索每个矩形来存储平行四边形顶点
  • 用小平面绘制 ggplot2 中分布的分位数

    我目前正在 ggplot 中绘制多个回归模型的一阶差分的多个不同分布 为了便于解释差异 我想标记每个分布的 2 5 和 97 5 百分位 由于我将制作相当多的绘图 并且由于数据按二维 模型和类型 分组 因此我想在 ggplot 环境中定义并
  • 用小平面绘制 ggplot2 中分布的分位数

    我目前正在 ggplot 中绘制多个回归模型的一阶差分的多个不同分布 为了便于解释差异 我想标记每个分布的 2 5 和 97 5 百分位 由于我将制作相当多的绘图 并且由于数据按二维 模型和类型 分组 因此我想在 ggplot 环境中定义并
  • Chai,Mocha:识别应该断言

    我在用着mocha and chai作为断言 我的规范中有几个断言 Exp1 should be true Exp2 should be true Exp3 should be true 如果其中之一失败 摩卡会写 预期错误为真 有办法识别
  • Chai,Mocha:识别应该断言

    我在用着mocha and chai作为断言 我的规范中有几个断言 Exp1 should be true Exp2 should be true Exp3 should be true 如果其中之一失败 摩卡会写 预期错误为真 有办法识别
  • Clojurescript:将 cljs 映射转换为 JavaScript 哈希

    下面的代码片段不起作用 headerElement goog dom createDom div strobj style background color EEE title note Reason 创建一个 Clojurescript
  • Clojurescript:将 cljs 映射转换为 JavaScript 哈希

    下面的代码片段不起作用 headerElement goog dom createDom div strobj style background color EEE title note Reason 创建一个 Clojurescript
  • 组件中的 Blazor 客户端 WASM 表单验证不起作用

    我在 Blazor WASM 客户端应用程序中从验证到正常工作时遇到问题 将 InputText 元素封装到组件以实现紧凑布局不再执行否则正确执行的验证 使用类似模型 public class Customer Required Strin
  • 组件中的 Blazor 客户端 WASM 表单验证不起作用

    我在 Blazor WASM 客户端应用程序中从验证到正常工作时遇到问题 将 InputText 元素封装到组件以实现紧凑布局不再执行否则正确执行的验证 使用类似模型 public class Customer Required Strin