代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

引用ASP.NET MVC中的视图目录

  •  0
  • leora Matt Lacey  · 技术社区  · 14 年前

    我有一些HTML文件作为常规网站的一部分,已经移植到ASP.NET MVC。在我的代码中,我需要读写这些HTML文件,并将它们粘贴到Tinymce编辑器中。

    为了能够在过去从磁盘读取和写入此文件,我有一个硬编码路径,但在ASP.NET MVC中似乎不起作用,除非我这样做:

    写作:

        string _urlDirectory = @"c:\hosting\MySite\Views\Members\newsletters\test.html";
        System.IO.File.WriteAllText(_urlDirectory, htmlData_);
    

    阅读:

            string url = @"c:\hosting\MySite\Views\Members\newsletters\test.html";
            var req = WebRequest.Create(url);
            var response = req.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string htmlData_ = sr.ReadToEnd();
    

    我正在将我的站点从一个数据中心移动到另一个数据中心,目录结构正在改变。我不想把硬编码路径改成另一个硬编码路径,而是想看看是否有更相对的方法来引用这些文件。

    1 回复  |  直到 14 年前
        1
  •  1
  •   tvanfosson    14 年前

    如果是我,我会把信息存储在数据库中。这样做容易得多,从我的角度来看,磁盘空间是在数据库服务器上消耗还是在Web服务器上消耗都无关紧要。另一方面,如果文件是相对静态的,也就是说,读了很多但写的很少 它们对所有用户都是通用的(站点文件不是每个用户文件),然后您可以考虑将它们放在内容目录中。我经常为这些文件在名为static的内容中创建一个子目录,尽管我通常不提供从站点编辑它们的方法(可编辑的内容将进入数据库)。通过这种方式,您可以构建到它们的路径。

    对于它的价值,您应该打开路径并阅读它们,而不是使用WebClient。

        string url = Url.Content( "~/content/newsletters/test.html" );
        string path = Server.MapPath( url );
        StreamReader sr = new StreamReader(path);
        string htmlData_ = sr.ReadToEnd();
    

    注意:您可能需要创建urlhelper,我认为它不是控制器上的属性。