如何表示MVC核心控制器的操作方法在核心剃刀页2.0相同

问题描述 投票:0回答:1

我想执行上传和从数据库。在MVC核心下载它的正常工作,但我无法MVC控制器马托转换成剃刀页面的处理方法。如何做到这一点。我会很高兴,如果有人helped.Following是我的应用程序的更多细节

MVC核心的控制器方法

[HttpPost]  
  public async Task<IActionResult> UploadFile(IFormFile file)  
  {  
      if (file == null || file.Length == 0)  
          return Content("file not selected");  
  
      var path = Path.Combine(  
                  Directory.GetCurrentDirectory(), "wwwroot",   
                  file.GetFilename());  
  
      using (var stream = new FileStream(path, FileMode.Create))  
      {  
          await file.CopyToAsync(stream);  
      }  
  
      return RedirectToAction("Files");  
  }  
  
  public async Task<IActionResult> Download(string filename)  
  {  
      if (filename == null)  
          return Content("filename not present");  
  
      var path = Path.Combine(  
                     Directory.GetCurrentDirectory(),  
                     "wwwroot", filename);  
  
      var memory = new MemoryStream();  
      using (var stream = new FileStream(path, FileMode.Open))  
      {  
          await stream.CopyToAsync(memory);  
      }  
      memory.Position = 0;  
      return File(memory, GetContentType(path), Path.GetFileName(path));  
  } 
How To Represent above methods in Razor Pages
c# asp.net-core-mvc razor-pages
1个回答
0
投票

尝试改变你的剃须刀本页按照以下步骤进行:

  1. 添加File剃刀页中Pages
  2. 其内容是 public class FileModel : PageModel { public void OnGet() { } [BindProperty] public IFormFile FormFile { get; set; } [IgnoreAntiforgeryToken] public async Task<IActionResult> OnPostUploadFileAsync() { return RedirectToPage("Index"); } public async Task<IActionResult> OnGetDownloadAsync(string filename) { if (filename == null) return Content("filename not present"); var path = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot", filename); var memory = new MemoryStream(); using (var stream = new FileStream(path, FileMode.Open)) { await stream.CopyToAsync(memory); } memory.Position = 0; return File(memory, "application/octet-stream", Path.GetFileName(path)); } }
  3. 其观点是 @page @model TestRazor.Pages.FileModel @{ ViewData["Title"] = "File"; } <h2>File</h2> <div class="row"> <div class="col-md-4"> <form method="post" asp-page-handler="UploadFile" enctype="multipart/form-data"> <div class="form-group"> <label asp-for="FormFile" class="control-label"></label> <input asp-for="FormFile" type="file" class="form-control" style="height:auto" /> <span asp-validation-for="FormFile" class="text-danger"></span> </div> <input type="submit" value="Upload" class="btn btn-default" /> </form> </div> </div>
  4. 请给OnGetDownloadAsynchttps://localhost:44332/file?handler=download&filename=test.txt
  5. 对于上传加载文件,转向https://localhost:44332/file,然后点击上传按钮来上传文件

有关剃刀页的详细信息,请参阅Upload files to a Razor Page in ASP.NET Core

© www.soinside.com 2019 - 2024. All rights reserved.