在asp.net mvc中引用View目录

时间:2010-05-26 12:23:21

标签: asp.net-mvc directory

我有一些html文件作为常规网站的一部分,已经移植到asp.net mvc。在我的代码中,我需要读取和编写这些html文件并将它们粘贴在一个简单的编辑器中

为了能够从磁盘读取和写入此文件,我有一个硬编码路径,但这似乎不适用于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 个答案:

答案 0 :(得分:1)

如果是我,我会将信息存储在数据库中。这种方式要容易得多,从我的角度来看,数据库服务器或Web服务器上是否消耗了磁盘空间并不重要。另一方面,如果文件是相对静态的 - 即大量读取但只有少量写入它们对所有用户都是通用的(站点文件不是每个用户文件),那么你可以考虑将它们放在Content目录中。我经常在内容中创建一个名为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,我不认为它是Controller上的属性。