组件库中不显示 Blazor Razor 验证消息
Blazor Razor Validation Message don't display from component library
我已经创建了一个 blazor 组件库,以便能够从应用程序调用组件,但未显示消息验证。目前,验证是在 InputText 中完成的(它验证输入的格式或长度),但未显示组件的消息或样式。
组件库代码:
CustomInputText
<input value="@Value" @oninput="OnValueChanged" placeholder=@placeholderText class="form-control i-component o-my-4" />
<ValidationMessage For="@(() => model)" />
@code {
[Parameter]
public string placeholderText { get; set; }
[Parameter]
public object model { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private Task OnValueChanged(ChangeEventArgs e)
{
Value = e.Value.ToString();
return ValueChanged.InvokeAsync(Value);
}
}
我从 nuget 包中导入组件以便能够在 App 中使用它
应用代码:
<CustomInputText placeholderText="Place Holder Test" model="filterPayroll.IPF" @bind-Value="filterPayroll.IPF"/>
当我将 ValidationMessage 直接放在应用程序中时,它可以正常工作,但不能放在库中。对于这两种情况,链接到“filterPayroll”class 的验证是正确完成的,区别在于在一种情况下显示消息而另一种不显示。
您需要将 For
作为表达式传递给验证摘要。
CustomInputText
需要看起来像这样:
<input value="@Value" @oninput="OnValueChanged" placeholder=@placeholderText class="form-control i-component o-my-4" />
<ValidationMessage For="@For" />
@code {
[Parameter]
public string placeholderText { get; set; }
[Parameter] public Expression<Func<string>>? For { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private Task OnValueChanged(ChangeEventArgs e)
{
Value = e.Value.ToString();
return ValueChanged.InvokeAsync(Value);
}
}
你的标记:
<CustomInputText @bind-Value="filterPayRoll.IDF" For="() => filterPayRoll.IDF" />
我已经创建了一个 blazor 组件库,以便能够从应用程序调用组件,但未显示消息验证。目前,验证是在 InputText 中完成的(它验证输入的格式或长度),但未显示组件的消息或样式。
组件库代码:
CustomInputText
<input value="@Value" @oninput="OnValueChanged" placeholder=@placeholderText class="form-control i-component o-my-4" />
<ValidationMessage For="@(() => model)" />
@code {
[Parameter]
public string placeholderText { get; set; }
[Parameter]
public object model { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private Task OnValueChanged(ChangeEventArgs e)
{
Value = e.Value.ToString();
return ValueChanged.InvokeAsync(Value);
}
}
我从 nuget 包中导入组件以便能够在 App 中使用它
应用代码:
<CustomInputText placeholderText="Place Holder Test" model="filterPayroll.IPF" @bind-Value="filterPayroll.IPF"/>
当我将 ValidationMessage 直接放在应用程序中时,它可以正常工作,但不能放在库中。对于这两种情况,链接到“filterPayroll”class 的验证是正确完成的,区别在于在一种情况下显示消息而另一种不显示。
您需要将 For
作为表达式传递给验证摘要。
CustomInputText
需要看起来像这样:
<input value="@Value" @oninput="OnValueChanged" placeholder=@placeholderText class="form-control i-component o-my-4" />
<ValidationMessage For="@For" />
@code {
[Parameter]
public string placeholderText { get; set; }
[Parameter] public Expression<Func<string>>? For { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private Task OnValueChanged(ChangeEventArgs e)
{
Value = e.Value.ToString();
return ValueChanged.InvokeAsync(Value);
}
}
你的标记:
<CustomInputText @bind-Value="filterPayRoll.IDF" For="() => filterPayRoll.IDF" />