如何解决Microsoft.AspNetCore.Components.Forms.InputDate 需要 EditContext 类型的级联参数
我正在开发 ASP.NET 5.0
blazor web assembly
应用。我需要在仪表板屏幕中有一个日期选择器来选择一个日期来显示详细信息。
这是我的代码:
<input class="input" type="month" id="staffPicker" name="staffPicker"
aria-label="Staff Sales Detail Period"
@bind="StaffSaleDetailsPeriod"
max="@DateTime.Now.ToString("yyyy-MM")">
我需要在更改日期时触发 API 调用。所以我尝试将 @onchange
添加到上面的代码中,如下所示。
<input class="input" type="month" id="staffPicker" name="staffPicker"
aria-label="Staff Sales Detail Period"
@bind="StaffSaleDetailsPeriod"
max="@DateTime.Now.ToString("yyyy-MM")"
@onchange="OnStaffSalePeriodChange">
但这会产生如下所示的新错误:
属性 'onchange' 被用于该元素两次或多次。 属性必须是唯一的(不区分大小写)。属性“onchange” 由“@bind”指令属性使用。
所以我尝试用 input
替换上面的 <InputDate>
元素,如下所示,
<InputDate class="input is-small"
ValueExpression="() => StaffSaleDetailsPeriod"
Value="StaffSaleDetailsPeriod"
ValueChanged="(DateTime staffSalesPeriod) => OnStaffSalePeriodChange()"
max="@DateTime.Now.ToString("yyyy-MM")"/>
这会产生如下所示的运行时错误:
Microsoft.AspNetCore.Components.Forms.InputDate1[System.DateTime] requires a cascading parameter of type EditContext. For example,you can use Microsoft.AspNetCore.Components.Forms.InputDate
1[[System.DateTime,System.Private.CoreLib,Version=5.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e]] 在 EditForm 中>
请帮助我解决我遗漏的问题,或者此 <InputDate>
不能与 EditForm 一起使用?有什么解决方法吗?请提出建议。
解决方法
<input class="input" type="month" id="staffPicker" name="staffPicker"
aria-label="Staff Sales Detail Period"
@bind="StaffSaleDetailsPeriod"
max="@DateTime.Now.ToString("yyyy-MM")"
@onchange="OnStaffSalePeriodChange">
当您使用@bind 编译器指令时,编译器会在幕后创建一些代码,其结果就像您执行了以下操作:
<input class="input" type="month" id="staffPicker" name="staffPicker"
aria-label="Staff Sales Detail Period"
value="StaffSaleDetailsPeriod"
max="@DateTime.Now.ToString("yyyy-MM")"
@onchange="@((args) => OnStaffSalePeriodChange=args.Value.ToString())">
因此,如果您使用@bind,则不能使用@onchange 指令,但您可以执行我上面所做的操作。
至于第二个问题:InputDate 组件必须嵌入在其 Model 属性 或 EditContext 具有必要值的 EditForm 中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。