如何在脚本中使用 ViewData 的值?

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

在我的 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))。

源代码是这样的: enter image description here

javascript asp.net-mvc asp.net-core razor-pages
1个回答
0
投票

考虑到您的 fileInfo.PhysicalPath;有反斜杠,你必须转义它们

fileInfo.PhysicalPath.Replace(@"\", @"\\")
。您现在应该能够在 Javascript 代码中以 @Html.Raw(Json.Serialize(@filePath)) 或简单的“@filePath”的形式访问它。

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