【问题标题】:Display html or multiline message in ValidationMessage in Blazor?在 Blazor 的 ValidationMessage 中显示 html 或多行消息?
【发布时间】:2020-08-09 07:06:21
【问题描述】:

问题

显示密码错误信息列表如下:

  1. 必须至少包含一个大写字母。
  2. 必须至少包含一个小写字母。
  3. 必须至少包含一个数字。
  4. 必须至少包含一个符号。
  5. 长度必须为 6 个字符。

在 MVC 中

我们可以通过以下代码实现:

@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString()))

我们如何在 Blazor 中做同样的事情?如果需要更多的东西来支持这个问题,请告诉我。

【问题讨论】:

  • @HenkHolterman 如何在 Blazor 中使用相同的验证消息。仅供参考 - Blazor 中的验证消息看起来像 <ValidationMessage For="@(() => signUpModel.Email)"></ValidationMessage>
  • 好的。那么,如何使用<ValidationSummary/>MarkupString(htmlText) 。谢谢:)
  • 也许使用您自己的编辑上下文、FieldChanged 事件和反射从其无效的模型中获取消息,所以您可以将它放在标记字符串中?还没有看到开箱即用的方法

标签: asp.net-mvc blazor blazor-client-side asp.net-blazor


【解决方案1】:

我还需要这样做才能进行自定义验证,但这看起来像 ValidationMessage,正如你在 cmets 中所说的那样

如何在 Blazor 中使用相同的验证消息。仅供参考 - Blazor 中的验证消息看起来像 signUpModel.Email)">

做到这一点的方法就是和ValidationMessage做同样的事情并改变它的渲染方式

您可以从repo 复制代码并进行一些更改。

  • 首先,最好将类名称更改为 CustomValidationMessage 之类的名称或任何您想要的名称。
  • 您将看到 BuildRenderTree 方法,它使用验证消息构建 html。
  • 如果您知道如何使用 BuildRenderTree,则可以对其进行编辑,但我建议您删除该方法并创建一个将呈现消息的 .razor 文件。
  • 执行与该方法相同的逻辑(foreach 消息),在内部您可以呈现任何您想要的内容(例如,使用 MarkupString(message))。

.剃刀

foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
{
    @* use message the way you want*@
}

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多