Blazor Web App保存文件到wwwroot时触发页面重载的问题求助
Blazor Web App保存文件到wwwroot时触发页面重载的问题求助
大家好,我最近在开发Blazor Web应用时遇到了一个头疼的问题,想请教下各位有没有解决思路。
我的应用需要从API接收完整的HTML文件,原本计划把这些文件存储到wwwroot/temp目录下,再通过<object>或者<iframe>来加载展示。但实际测试时发现,只要往wwwroot/temp目录写入新文件,整个Blazor页面就会自动重载,直接打断了正常的操作流程。
我猜测会不会是Blazor默认监听了wwwroot目录的文件变化,一旦检测到改动就触发页面重载?如果真是这样的话,我要么需要找到关闭这个监听的方法,要么得找一个能被前端访问但不会被Blazor监听的目录来存储临时文件。不过也有可能我的猜测完全错误,所以想请大家帮忙分析问题原因,或者给个可行的替代方案。
为了方便大家复现这个问题,我特意做了一个简化的示例项目,代码如下:
@page "/" @using BlazorSaveHtmlDemo.Model <PageTitle>Home</PageTitle> <EditForm Model=Model OnValidSubmit=OnValidSubmit> <p> <label for="Filename">Filename:</label> <br /> <InputText id="Filename" maxlength="32" @bind-Value=Model.Filename /> </p> <p> <label for="Content">Content:</label> <br /> <InputText id="Content" maxlength="32" @bind-Value=Model.Content /> </p> <p> <button type="submit">Save</button> </p> </EditForm> @if (iFrameSrc is not null) { <iframe src=@iFrameSrc style="width: 400px; height: 300px;"></iframe> } @code { private CreateHtmlFileModel Model = new(); private String? iFrameSrc = null; private void OnValidSubmit() { var localPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"), "temp"); if (!Directory.Exists(localPath)) Directory.CreateDirectory(localPath); var filename = Model.Filename + ".html"; var localFile = Path.Combine(localPath, filename); File.WriteAllText(localFile, $@" <html> <head> <title>{Model.Filename}</title> </head> <body> {Model.Content} </body> </html> "); iFrameSrc = "/wwwroot/temp/" + filename; } }
备注:内容来源于stack exchange,提问作者Christian B.
相关产品推荐
相关产品推荐

