在我的 PageModel 中,我在返回视图之前设置 ViewData 的值。 当我调试时,我看到 ViewData 具有预期值, \Testing\Development\Accounting\statements.png
// .cshtml.cs
public Task<IActionResult>OnGetViewFile(string fileName)
{
var fileProvider = _fileServerProvider.GetProvider("/Accounting");
var fileInfo = fileProvider.GetFileInfo(fileName);
ViewData["FilePath"] = fileInfo.PhysicalPath;
return Task.FromResult<IActionResult>(this.Page());
}
这就是 .cshtml 的样子:
@page
@model AccountingProject.Pages.Statements.Statements_Model
@{
var filePath = ViewData["FilePath"] as string; // when this is debugged it has the correct value
}
//html here
<script type="text/javascript">
let viewFileName = '@filePath'; // why is it an empty string here? How can I set viewFileName to the value of filePath?
console.log(viewFileName);
</script>
我需要能够在脚本中使用 filePath 的值,但没有成功。 无论我尝试什么,该值要么最终为空字符串,要么为 null。 我还尝试将 viewFileName 设置为不带单引号的 @filePath 以及将其设置为 @Html.Raw(Json.Serialize(filePath))。
考虑到您的 fileInfo.PhysicalPath;有反斜杠,你必须转义它们
fileInfo.PhysicalPath.Replace(@"\", @"\\")
。您现在应该能够在 Javascript 代码中以 @Html.Raw(Json.Serialize(@filePath)) 或简单的“@filePath”的形式访问它。