【发布时间】:2019-11-08 11:54:42
【问题描述】:
我正在尝试使用 EditForm 在 Blazor 中触发模型验证。
由于某种原因,如果使用InputText,似乎不会调用oninput 事件,但它使用简单的input 元素可以工作。
我错过了什么吗?
这是一个 HTML 示例:
<EditForm Model="@Model" OnValidSubmit="@OnValidSubmit" id="authorize">
<h1 class="mb-3">
<span class="d-block">Authorize</span>
</h1>
<DataAnnotationsValidator />
<div class="form-group">
<label class="sr-only" for="AuthorizeUsername">Username</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text"><i class="fas fa-user"></i></div>
</div>
<InputText type="text" class="form-control" id="AuthorizeUsername" placeholder="Username" @bind-value="@Model.Username" @bind-value:event="oninput" />
</div>
</div>
<div class="form-group">
<label class="sr-only" for="AuthorizePassword">Password</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text"><i class="fas fa-asterisk"></i></div>
</div>
<InputText type="password" class="form-control" id="AuthorizePassword" placeholder="Password" @bind-value="@Model.Password" @bind-value:event="oninput" />
</div>
</div>
<div class="form-group">
<ValidationSummary />
<button type="submit" class="btn btn-outline-primary"><i class="fas fa-sign-in-alt mr-1"></i> Login</button>
</div>
</EditForm>
【问题讨论】:
-
我发现 this issue 对于您使用的
bind-value:event格式有一些不同的方法和解决方法。尝试使用bind-value-oninput="@Model.Password" -
Studio 不会再接受这个,因为语法已经改变,也许它是一个错误,应该发布在 github 上?
-
看起来应该可以了。除了
InputText之外,我能找到的任何示例都与您的示例完全相同。所以是的,可能值得为它创建一个问题 -
我遇到了同样的问题,我发现使用
input元素而不是InputText元素对我有用。 -
在
@bind-Value中使用大写V,因为Value是C# 类InputText上的属性名称