如何在 MVC Core 中渲染静态 html 文件?

2024-04-17

我正在使用静态文件中间件来访问位于 wwwroot 之外的客户特定资源。这些资源包括 CSS 和图像文件,可在 ~/resources 访问。例如,客户特定的 CSS 位于此处:

 <link rel="stylesheet" href="~/resources/css/customer.css" />

现在我想提供一个位于 ~/resources/html/static.html 中的静态 html 文件。我创建了一个仅包含 HtmlString 属性的模型,我希望使用此模型将 static.html 的内容注入标准 cshtml 中。这是我的控制器操作:

public IActionResult MentionsLegales()
{
    var filePath = IO.Path.Combine(
        _env.ContentRootPath, "PersonnalisationClient", _config["PersonnalisationClient:NomClient"], "html", "mentionslegales.html");

    var mentionsLegalesModel = new MentionsLegalesModel();

    if (IO.File.Exists(filePath))
        mentionsLegalesModel.Content = new Microsoft.AspNetCore.Html.HtmlString(IO.File.ReadAllText(filePath));
    else
    {
        _logger.LogWarning($"Le fichier {filePath} est introuvable");
        mentionsLegalesModel.Content = new Microsoft.AspNetCore.Html.HtmlString(string.Empty);
    }
    return View(mentionsLegalesModel);
}

如您所见,这里我通过文件的物理路径访问该文件。它有效,但我对此解决方案不满意。我想通过其服务器路径读取该文件,即 ~/resources/html/mentionslegales.html,但我不知道该怎么做。显然,在非 Core MVC 中,可以使用 Server.MapPath 来达到此目的,但我在 MVC 核心中找不到等效项。你有什么想法 ?


如果要调用静态资源Web 根目录之外的文件夹 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.2#serve-files-outside-of-web-root在页面中,您可以配置静态文件中间件Configure方法如下:

app.UseStaticFiles(); // For the wwwroot folder

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), "resources")),
    RequestPath = "/resources"
});

然后引用如下文件:

 <link rel="stylesheet" href="~/resources/css/customer.css" />

return View()保留用于返回视图执行的结果,即剃刀 CSHTML页。您不能使用 HTML 页面。尝试直接重定向:

return Redirect("~/resources/html/mentionslegales.html");

请参阅下面的链接,这可能会帮助您更好地了解如何从控制器返回静态 html 页面。

如何使用 ASP.NET Core MVC 发出 HTML 文件的 get 请求 https://stackoverflow.com/questions/49524917/how-to-make-a-get-request-for-an-html-file-using-asp-net-core-mvc

https://github.com/aspnet/Mvc/issues/3751 https://github.com/aspnet/Mvc/issues/3751

Update:

在View中注入静态html,可以参考:

控制器

 public IActionResult GetStaticFile()
 {
        var mentionsLegalesModel = new MentionsLegalesModel();
        var htmlString = System.IO.File.ReadAllLines("./resources/html/mentionslegales.html");
        mentionsLegalesModel.Content = string.Join("", htmlString);
        return View(mentionsLegalesModel);
  }

View:

@model MentionsLegalesModel

@Html.Raw(Model.Content)

您也可以尝试上面第一个链接上建议的部分视图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MVC Core 中渲染静态 html 文件? 的相关文章

  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐