blazor - 如何访问 EditForm 中单个字段的验证?
问题描述
我想根据<EditForm />
.
我的简化形式看起来像这样
<EditForm Model="Registration" OnValidSubmit="Submit">
<label for="input-username">Username</label>
<InputText id="input-username"
type="text"
class="???"
@bind-Value="Registration.Username" />
<p>
<ValidationMessage For="@(() => Registration.Username)" />
</p>
</EditForm>
我的表单有比这个更多的字段,所以我只想过滤验证Registration.Username
,只编辑 .css 类#input-username
。
解决方案
您可以订阅 EditContext 对象的 OnFieldChanged 事件,找出哪个字段已更改并采取相应措施。
<EditForm EditContext="EditContext" OnValidSubmit="Submit">
<DataAnnotationsValidator />
<label for="input-username">Username</label>
<InputText id="input-username" type="text" class="MyUsername"
@bind-Value="Registration.Username" />
<p>
<ValidationMessage For="@(() => Registration.Username)" />
</p>
<button type="submit">Submit</button>
</EditForm>
@code
{
private Registration Model = new Registration();
private EditContext EditContext;
private string MyUsername = "InitialCssClass";
protected override void OnInitialized()
{
EditContext = new EditContext(Model);
EditContext.OnFieldChanged += EditContext_OnFieldChanged;
}
private void EditContext_OnFieldChanged(object sender,
FieldChangedEventArgs e)
{
if (e.FieldIdentifier.FieldName == nameof(Model.Username))
{
MyUsername = "Set here a new class name, etc.";
}
}
}
推荐阅读
- r - 在 RGoogleAnalytics 中刷新令牌
- javascript - 从 NPM 包连接到 mongoDB
- c# - 比较 C# 中相同对象的两个集合并查找新的、更改的或删除的记录
- javascript - 在 jQuery ajax post 方法中出现错误 400
- mysql - CAST 和 CONVER 在 MySQL 中有效吗?
- wildfly - HA 模式下的 Keycloak(Wildfly/Infinispan) - 检测集群中其他机器时的问题
- php - 消息:“CSRF 令牌不匹配。”,异常:“Symfony\Component\HttpKernel\Exception\HttpException”,...}
- c# - 如何在 CefSharp 中以树结构显示 XML
- jupyter-notebook - 在 Jupyter Notebook 运行时切换 Anaconda 环境
- java - 如何在没有弹簧启动的情况下模拟 J2EE 中的 junit 数据库