【问题标题】:How to change below code from asp.net to razor page如何将下面的代码从 asp.net 更改为 razor 页面
【发布时间】:2019-11-28 20:01:58
【问题描述】:
我是 Razor 页面的新手,但一直在使用 aspx。以下是我的代码 - 请帮我将其转换为 Razor 页面:
void Page_Load(object sender, EventArgs e)
{
foreach(string f in Request.Files.AllKeys)
{
HttpPostedFile file = Request.Files[f];
file.SaveAs("C:\\e_data\\WorkPage\\IMS18\\ALBAB_Dynamic\\20008\\Case_Manager\\" + file.FileName);
}
}
我想更改为剃须刀页面代码。
【问题讨论】:
标签:
asp.net-mvc
asp.net-core
razor-pages
【解决方案1】:
这是我用于上传单个文件并将文件路径存储在数据库中的方法。它将解释微软在其文档中遗漏的部分(例如 .netcore2.2 中基本目录的路径)请注意,安全性对我来说并不是什么大问题,因为这是一个小公司的内部网......但是那里有一些关于获取不带扩展名的文件名的内容,出于安全原因,您可能希望在不带文件扩展名的情况下存储(或删除然后添加您自己的扩展名):
public async Task<IActionResult> OnPostAsync()
{
if (id == null)
{
return NotFound();
}
Kit = await _context.Kits.FirstOrDefaultAsync(m => m.ID == id);
if (Kit == null)
{
return NotFound();
}
if (Request.Form.Files.Count > 0)
{
IFormFile file = Request.Form.Files[0];
string folderName = "UploadedOriginalBOMs";
string OrgBOMRootPath = Path.Combine(AppContext.BaseDirectory, folderName);
if (!Directory.Exists(OrgBOMRootPath))
{
Directory.CreateDirectory(OrgBOMRootPath);
}
string sFileExtension = Path.GetExtension(file.FileName).ToLower();
string fullPath = Path.Combine(OrgBOMRootPath, file.FileName);
// StringBuilder sb = new StringBuilder();
if (file.Length > 0)
{
String cleanFilename = Path.GetFileNameWithoutExtension(file.FileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
file.CopyTo(stream);
}
Kit.PathToOriginalBOM = "UploadedOriginalBOMs/" + file.FileName;
_context.Kits.Attach(Kit).State = EntityState.Modified;
await _context.SaveChangesAsync();
}
}
else
{
if (!ModelState.IsValid)
{
return Page();
}
}
return RedirectToPage("./Index");
}
您会注意到,您可以使用与 .aspx 文件中相同的 forloop。