Razor
后台下载文件的方式,其实跟MVC
下Controller
方式非常的类似。只需要我们搞明白在Razor
中如何调用.cs
文件的后台方法就可以了
Razor后台方法调用
在Razor
中,我们可以通过定义标签的asp-page-handler
属性,定义后台调用的方法,只是我们需要注意的是,在post
和get
方式下,后台调用的方法有些区别,post
方式方法是OnPostXXX
,而get方式方法是OnGetXXX
,其中OnGet
和OnPost
是系统预制的方法。
比如,我们下面的代码
- <form method="post">
- <button type="submit" asp-page-handler="Down" class="btn btn-success">路径下载</button>
- </form>
由于我form
通过post
方式提交,button
的asp-page-handler
定义的方法为Down
,那么这段代码调用的后台方法为OnPostDown
文件下载Demo
明白了上面的规则,我们就可以很容易的实现文件的下载功能
前台代码
- @page
- @model IndexModel
- @{
- ViewData["Title"] = "Home page";
- }
- <div style="margin-top:10px;">
- <form method="post">
- <button type="submit" asp-page-handler="Down" class="btn btn-success">路径下载</button>
- <br/>
- <br/>
- <button type="submit" asp-page-handler="Down1" class="btn btn-success">文件流下载</button>
- <br/>
- <br/>
- <button type="submit" asp-page-handler="Down2" class="btn btn-success">远程下载</button>
- <br/>
- <br/>
- </form>
- </div>
后台代码
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net.Http;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.RazorPages;
- using static System.Net.WebRequestMethods;
- namespace Razor.Pages
- {
- public class IndexModel : PageModel
- {
- public void OnGet()
- {
- }
- public IActionResult OnPostDown()
- {
- return File("/Files/text1.txt", "application/txt", "1.txt");
- }
- public IActionResult OnPostDown1()
- {
- var filePath = Directory.GetCurrentDirectory() + "/wwwroot" + "/Files/text1.txt";
- FileStream fileStream = new FileStream(filePath, FileMode.Open);
- return File(fileStream, "application/txt", "1.txt");
- }
- public async Task<IActionResult> OnPostDown2()
- {
- HttpClient client = new HttpClient();
- var path = "http://localhost:5000/Files/text1.txt";
- client.BaseAddress = new Uri(path);
- var stream = await client.GetStreamAsync(path);
- return File(stream, "application/txt", "1.txt");
- }
- }
- }
本文地址:https://www.lisen.me/asp-net-core-razor-files-to-download.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!
发表于2017-10-19 at 20:39 板凳
你猜猜猜
发表于2017-10-19 at 20:29 沙发
测试一下