You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazorise RichTextEdit非空验证失效问题求助

解决Blazorise RichTextEdit无表单下的非空验证问题

针对你用隐藏TextEdit做RichTextEdit验证但逻辑未触发的问题,可按以下步骤调整:

1. 同步富文本内容到隐藏字段并处理HTML标签

RichTextEdit的内容带HTML格式,直接绑定会包含无效标签,需先剥离HTML得到纯文本再验证。修改你的MyCheckRTEMethod方法:

private RichTextEdit rteViberBody;
private string viberMessageHiddenForValidation;

private void MyCheckRTEMethod()
{
    // 获取富文本编辑器的原始HTML内容
    var htmlContent = rteViberBody.Content;
    // 剥离HTML标签,只保留纯文本并去除首尾空格
    viberMessageHiddenForValidation = StripHtml(htmlContent).Trim();
}

// 辅助方法:剥离HTML标签
private string StripHtml(string html)
{
    if (string.IsNullOrEmpty(html)) return string.Empty;
    // 用正则移除所有HTML标签,若需更严谨可使用AngleSharp等库
    return System.Text.RegularExpressions.Regex.Replace(html, "<.*?>", string.Empty);
}

2. 给Validation组件添加引用并手动触发验证

未使用Form组件时,Blazorise的Validation不会自动触发校验,需手动调用验证方法:

调整HTML代码

给Validation组件添加@ref,同时移除TextEdit的@bind-Text:event="oninput"(无需监听隐藏组件的输入事件):

<Field>
    <Validation @ref="viberValidation" AsyncValidator="@ValidateRTEViberInputAsync">
        <TextEdit @bind-Text="viberMessageHiddenForValidation" Visibility="Visibility.Invisible">
            <Feedback>
                <ValidationError>Please type a message.</ValidationError>
            </Feedback>
        </TextEdit>
    </Validation>
</Field>

代码中触发验证

在代码里声明Validation引用,并在需要验证的时机(比如提交按钮点击)执行验证:

private Validation viberValidation;

// 示例:提交按钮点击事件
private async Task OnSubmit()
{
    // 先同步最新富文本内容到隐藏字段
    MyCheckRTEMethod();
    // 手动触发验证
    var validationResult = await viberValidation.ValidateAsync();
    
    if (validationResult.IsValid)
    {
        // 验证通过,执行后续业务逻辑
    }
}

3. 确保验证方法逻辑正确

调整异步验证方法,保证验证纯文本非空:

private async Task<ValidationResult> ValidateRTEViberInputAsync(ValidationContext context)
{
    if (string.IsNullOrWhiteSpace(viberMessageHiddenForValidation))
    {
        return ValidationResult.Error("Please type a message.");
    }
    return ValidationResult.Success();
}

关键说明

  • 剥离HTML标签是为了避免用户仅输入空格、换行或空HTML标签(如<br>)时被误判为有效内容
  • 手动触发验证是因为无Form组件时,Blazorise不会自动启动Validation的校验流程
  • 验证前必须同步富文本内容到隐藏字段,确保校验的是最新输入内容

内容的提问来源于stack exchange,提问作者amima88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:27