Pan*_*ake 12 c# .net-core asp.net-core blazor blazor-server-side
当我的服务器端 Blazor 应用程序运行时,我希望一些 Javascript 代码_Host.cshtml能够将数据发布到控制器操作。当然,这完全超出了 Blazor 应用程序本身的范围,并且与 Blazor 应用程序本身无关。
我想这将是添加调用的问题services.AddControllers(),并endpoints.MapControllers()在适当的地方Startup.cs。但是,在执行此操作并实施控制器操作之后,我进行了以下观察:
@Url.Action控制器操作返回一个空字符串如何以克服上述两个问题的方式向我的服务器端 Blazor 项目添加控制器(而非视图)支持?
Mic*_*ton 22
使用:endpoints.MapControllers()
你可以在你的startup.cs中有这个:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
Run Code Online (Sandbox Code Playgroud)
这个控制器:
[Route("api/[controller]")]
[ApiController]
public class DownloadController : Controller
{
private readonly IWebHostEnvironment environment;
public DownloadController(IWebHostEnvironment environment)
{
this.environment = environment;
}
[HttpGet("[action]")]
public IActionResult DownloadFile(string FileName)
{
string path = Path.Combine(
environment.WebRootPath,
"files",
FileName);
var stream = new FileStream(path, FileMode.Open);
var result = new FileStreamResult(stream, "text/plain");
result.FileDownloadName = FileName;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
这在您的 .razor 页面中:
@inject NavigationManager NavigationManager
<button @onclick="DownloadFile">Download</button>
@code {
public void DownloadFile()
{
NavigationManager.NavigateTo($"/api/Download/DownloadFile?FileName=BlazorHelpWebsite.zip", true);
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅:https : //github.com/ADefWebserver/Blazor-Blogs/tree/master/BlazorBlogs
| 归档时间: |
|
| 查看次数: |
10095 次 |
| 最近记录: |