【发布时间】:2022-02-27 23:52:21
【问题描述】:
如何绑定到 Blazorise 组件,在这种情况下才能使验证工作?
<Validation>
<Field>
<FieldLabel>Name</FieldLabel>
<TextEdit Placeholder="Enter your name here"
@bind-Text="@DataRecord.Person.Name"
ReadOnly="false"
Disabled="false">
<Feedback>
<FieldHelp>A valid name will be 3-100 characters long.</FieldHelp>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
上面的代码会在页面内重复多次,具体取决于我拥有的字段数量...
所以我尝试创建一个名为<ValidatedTextEdit> 的自定义剃须刀组件,其中包含以下代码:
<Validation>
<Field>
<FieldLabel>@FieldLabelText</FieldLabel>
<TextEdit Placeholder="@FieldPlaceholderText"
@bind-Text="@FieldDataSource"
ReadOnly="@IsFieldReadOnly"
Disabled="@IsFieldDisabled">
<Feedback>
<FieldHelp>@FieldHelpText</FieldHelp>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
代码部分
@code {
[Parameter] public string FieldLabelText { get; set; } = "";
[Parameter] public string FieldPlaceholderText { get; set; } = "";
[Parameter] public string FieldHelpText { get; set; } = "";
[Parameter] public bool IsFieldReadOnly { get; set; } = false;
[Parameter] public bool IsFieldDisabled { get; set; } = false;
protected string _fieldDataSource;
[Parameter]
public string FieldDataSource
{
get => _fieldDataSource;
set
{
if (_fieldDataSource == value) return;
_fieldDataSource = value;
FieldDataSourceChanged.InvokeAsync(value);
}
}
[Parameter]
public EventCallback<string> FieldDataSourceChanged { get; set; }
}
我希望像这样使用<ValidatedTextEdit>:
<ValidatedTextEdit FieldLabelText="Name"
FieldPlaceholderText="Enter your name here"
@bind-FieldDataSource="@DataRecord.Person.Name"
FieldHelpText="A valid name will be 3-100 characters long."
IsFieldReadOnly="false"
IsFieldDisabled="false"/>
现在的问题是,虽然数据存储在数据库中,但<Validation> 和<ValidationError /> 似乎都不起作用...它不会显示任何错误...????
为什么?
【问题讨论】:
-
(发布了一个可能应该是评论的答案,并带有指向docs.microsoft.com/en-us/aspnet/core/blazor/components/…的链接)
-
非常感谢您的回复..我确实尝试过使用这种方法..它确实保存到数据库..但不幸的是,它仍然没有显示验证错误:(跨度>
标签: c# data-binding blazor blazorise