我们知道使用 InputSelect 我们不能同时使用 @bind-value 和 @onchange
如果我们使用后者(用 select 代替 InputSelect)我们如何设置一个不同于第一个的初始值?(例如,在此样本中设置为 2018 年,变量的值)
就像是 if (i == month) => selected
<select @onchange="ChangeYear">
@for (int i = 2015; i < DateTime.Now.Year + 1; i++)
{
<option value="@i">@i</option>
}
</select>
@code {
int year = 2018;
void ChangeYear(ChangeEventArgs e)
{
int year = Convert.ToInt32(e.Value.ToString());
//...
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Isa*_*aac 12
您可以通过多种方式实现它,例如,定义一个绑定到 select 元素的 value 属性的局部变量 SelectedYear,以及一个更新 SelectedYear 的更改事件。这实际上创建了双向数据绑定。
请注意,SelectedYear 被分配了一个默认值 2018
<select value="@SelectedYear" @onchange="ChangeYear">
@for (int i = 2015; i < DateTime.Now.Year + 1; i++)
{
<option value="@i">@i</option>
}
</select>
<p>@SelectedYear</p>
@code
{
private int SelectedYear { get; set; } = 2018;
void ChangeYear(ChangeEventArgs e)
{
SelectedYear = Convert.ToInt32(e.Value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我们知道使用 InputSelect 我们不能同时使用 @bind-value 和 @onchange
这是因为编译器添加了change事件处理程序,将InputSelect组件的Value(注意是@bind-Value,不是@bind-value)属性更新为新选择的值。这就是为什么你可以做这样的事情:
<p>@SelectedYear</p>
<EditForm Model="@employees">
<DataAnnotationsValidator />
<div>
<InputSelect @bind-Value="SelectedYear" Id="SelectedYear" Class="form-control">
@for (int i = 2015; i < DateTime.Now.Year + 1; i++)
{
<option value="@i">@i</option>
}
</InputSelect>
</div>
<button type="submit">Ok</button>
</EditForm>
@code
{
private string SelectedYear { get; set; } = "2018";
public List<Employee> employees = new List<Employee>();
public class Employee
{
public int YearBorn { get; set; }
public string Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在 HTML 中,“selected”是选项的一个属性。Blazor 允许您使用布尔值进行切换:
<option value="@i" selected="@(i==year)">@i</option>
Run Code Online (Sandbox Code Playgroud)
其余代码可以保持原样。
| 归档时间: |
|
| 查看次数: |
9445 次 |
| 最近记录: |