gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:33:48 25 4
gpt4 key购买 nike

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

我的代码是这样的:

<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();
}
}
}
}

如果我将该字段留空,我会得到:

enter image description here

如果我输入错误的名字,我只会得到这个:

enter image description here

最佳答案

只需替换:

messages.Add(editContext.Field(_model.Name), "Name should start with a capital.");

messages.Add(() => _model.Name, "Name should start with a capital.");

那么它应该可以正常工作。

关于blazor - 添加到 ValidationSummary 的消息仅显示在 ValidationSummary 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61402726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com