Blazor能否无需JavaScript触发隐藏InputFile的点击事件?
在Blazor中无需JavaScript触发隐藏InputFile的点击事件
无JS实现方案(调整DOM结构)
不需要编写任何C#或JavaScript触发逻辑,只需通过CSS将<InputFile>组件叠加在按钮上方并设置为透明不可见,点击按钮的操作会直接触发InputFile的文件选择弹窗。修改后的代码如下:
<div style="position: relative; display: inline-block;"> <InputFile OnChange="@LoadFiles" multiple style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer;" /> <button class="btn btn-secondary" type="button"><i class="icons8-upload"></i> Upload file(s)</button> </div> @code { protected async Task LoadFiles(InputFileChangeEventArgs e) { // 处理文件上传逻辑 } }
为什么原方案无法纯C#触发?
Blazor的<InputFile>组件封装了原生的<input type="file">,浏览器出于安全限制,不允许通过纯代码(非用户交互)触发文件选择弹窗,必须由真实的用户点击操作触发。因此直接在SelectFile方法里用C#调用点击事件无法实现,只能通过上述DOM叠加的方式模拟点击。
内容的提问来源于stack exchange,提问作者Ridwan Bhugaloo
相关产品推荐
相关产品推荐

