首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到ValidationSummary的消息仅在ValidationSummary中显示

添加到ValidationSummary的消息仅在ValidationSummary中显示
EN

Stack Overflow用户
提问于 2020-04-24 14:49:13
回答 1查看 175关注 0票数 1

我在一个剃刀组件中有一个简单的表单,其中有一个名为Name的输入字段。如果它是空的,则会正确显示错误消息,并对数据注释进行验证。但是我也有一个自定义的验证,但是这个消息只在ValidationSummary中显示,而不在ValidationMessage中显示。

我的代码如下所示:

代码语言:javascript
复制
<EditForm EditContext="@_editContext">

    <DataAnnotationsValidator />
    <ValidationSummary />
    <div class="form-group">
        <label class="control-label">Name:</label>
        <InputText id="countryCode" @bind-Value="_model.Name" class="form-control" />
        <ValidationMessage For="@(() => _model.Name)" />
    </div>

    <button type="submit">Submit</button>
</EditForm>

@code {

    class MyModel
    {
        [System.ComponentModel.DataAnnotations.Required]
        public string Name { get; set; }
    }

    private EditContext _editContext;
    private MyModel _model = new MyModel();

    protected override void OnInitialized()
    {
        _editContext = new EditContext(_model);

        var messages = new ValidationMessageStore(_editContext);

        _editContext.OnFieldChanged +=
            (sender, eventArgs) => ValidateFields((EditContext)sender, messages, eventArgs.FieldIdentifier);
    }

    private void ValidateFields(EditContext editContext, ValidationMessageStore messages, FieldIdentifier field)
    {
        messages.Clear();

        if (field.FieldName == nameof(_model.Name))
        {
            if(!string.IsNullOrEmpty(_model.Name) && !char.IsUpper(_model.Name[0]))
            {
                messages.Add(editContext.Field(_model.Name), "Name should start with a capital.");
                editContext.NotifyValidationStateChanged();
            }
        }
    }
}

如果将该字段保留为空,则会得到以下结果:

如果我输入了一个错误的名字,我只能得到这样的结果:

EN

回答 1

Stack Overflow用户

发布于 2020-04-24 14:49:13

只需替换:

代码语言:javascript
复制
messages.Add(editContext.Field(_model.Name), "Name should start with a capital.");

使用

代码语言:javascript
复制
messages.Add(() => _model.Name, "Name should start with a capital.");

那么它应该工作得很好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61402726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档