2010-05-26 58 views
0

我有一些html文件作为已移植到asp.net mvc的常规网站的一部分。在我的代码中,我需要读取和写入这些html文件,并将它们粘贴在tinymce编辑器中。引用在asp.net中的查看目录mvc

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

如果是我,我会将信息存储在数据库中。这很容易,从我的角度来看,磁盘空间是否在数据库服务器或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上的一个属性。

+0

@tvanfosson - 感谢您的反馈。我同意将这些文件移动到数据库中是一种方法。这将使生活更简单 – leora 2010-05-26 12:42:51

+0

@tvanfosson - 你将在SQL服务器中使用什么数据类型字段来存储? – leora 2010-05-26 12:47:59

+0

@ooo - 这取决于预期的大小。我已经完成了varchar(x000)和varchar(max)。 – tvanfosson 2010-05-26 13:44:13