【问题标题】:What is the best practice for using ASP.NET MVC to render lots of html or text files?使用 ASP.NET MVC 呈现大量 html 或文本文件的最佳实践是什么?
【发布时间】:2009-02-19 08:07:16
【问题描述】:

我有很多html页面,但是不知道如何通过asp.net mvc视图显示出来。

我构建了一个视图作为我的模板,并使用 asp.net mvc 将 html 插入到模板中,然后渲染它。

但问题是我必须使用 FileStream 将基于 html 的原始文件读入 memroy,然后将其放入视图模板中,例如 ViewData["content"] = ???.

我只是想知道是否有其他更好的方法可以将静态 html 文件呈现到浏览器。

我是否清楚地描述了这个问题?

【问题讨论】:

  • 如果你的内容已经在 html 文件中并且不是来自外部源,为什么要通过 ASP.NET MVC 将其推送给用户?在我看来,最好让 Web 服务器直接执行它——毕竟这是它的工作。
  • 是的,我同意你的看法。但我不知道该怎么做。我怎样才能给用户直接网址?你能给一些代码吗? Mvc 总是通过 {controller}{action}{value} 解释 url,那么我怎样才能给用户文件的直接链接呢?谢谢!
  • 您可以编辑 globals.asax.cs 并输入类似 Routes.IgnoreRoute("{fileName}.html")

标签: asp.net asp.net-mvc


【解决方案1】:

我猜你可以这样做:

using(var file = new StreamReader(htmlFileName))
{
    return Content(file.ReadToEnd());
}

请注意,mime 类型自动默认为 text/html,但您可以选择通过将类型作为附加参数提供给 Content 方法来指定应发送哪些 mime 类型标头。

【讨论】:

  • 谢谢你的回复,它就是我想要的!
【解决方案2】:

我猜你也可以直接将 HTML 中的 iframe 元素指向目标文件 url。

【讨论】:

    【解决方案3】:

    或者,您可以编写自己的 ActionResult,将文件的内容写入 Response.Output(可能会避免一次将整个文件加载到内存中,尽管这可能不是一个大问题)。

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 2010-09-12
      • 2020-07-18
      • 2011-04-22
      • 1970-01-01
      • 2010-12-24
      • 2010-11-11
      • 2014-03-01
      • 1970-01-01
      相关资源
      最近更新 更多