由于 Blazor 不支持停止事件传播,因此我需要对type="date"
带有onchange
事件处理程序和带有事件处理程序的输入元素进行单向绑定。
像这样的东西:
<input type="date" value="@_endDate" format-value="yyyy-MM-dd" onchange="@EndDate_change"/>
Run Code Online (Sandbox Code Playgroud)
但这不起作用。该页面包含 datePicker 但没有任何值。
“_endDate”是日期时间类型。
如果我使用双向绑定,那么一切正常。
<input type="date" bind="@_endDate" format-value="yyyy-MM-dd"/>
Run Code Online (Sandbox Code Playgroud)
知道为什么第一个“输入”不起作用吗?有什么错误还是这是blazor中的错误?对于带有 onchange 事件的纯文本单向绑定工作没有问题。
Edit1: _endDate 包含当前日期并设置为 DateTime.Now
protected void EndDate_change(UIChangeEventArgs endDateEvent)
{
_endDate = Convert.ToDateTime(endDateEvent.Value);
StateHasChanged();
}
Run Code Online (Sandbox Code Playgroud)
Wal*_*thi 15
要保留两者@onchange=
和一种单向方式,value=
请使用此
value="@someDate.ToString("yyyy-MM-dd")"
技巧是将格式设置为字符串yyyy-MM-dd
以从值中获取单向绑定。以不同的方式设置格式或简单地使用DateTime
对象无法在日期选择器内显示日期。
例子:
<input type="date" value="@knowledge.ActualShortTermDate.ToString("yyyy-MM-dd")" @onchange="@(async (e) => await updateDate(DateTime.Parse(e.Value.ToString())))" />
归档时间: |
|
查看次数: |
10366 次 |
最近记录: |