2010-05-26 3 views
0

J'ai des fichiers html dans le cadre d'un site Web classique qui a été porté sur asp.net mvc. Dans mon code j'ai besoin de lire et d'écrire ces fichiers html et les coller dans un éditeur tinymceRéférencement du répertoire d'affichage dans asp.net mvc

Pour pouvoir lire et écrire ce fichier à partir du disque dans le passé, j'avais un chemin codé en dur, mais cela ne semble pas travailler dans asp.net mvc à moins que je fais quelque chose comme ceci:

Rédaction:

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

lecture:

 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(); 

je me déplace mon site d'un centre de données à l'autre et la structure du répertoire change. Au lieu de simplement changer le chemin codé en dur vers un autre chemin codé en dur, je voulais voir s'il y avait une façon plus relative de référencer ces fichiers.

Répondre

1

Si c'était moi, je stockerais l'information dans une base de données. C'est beaucoup plus facile de cette façon et, de mon point de vue, peu importe que l'espace disque soit consommé sur le serveur de base de données ou le serveur web. Si, par contre, les fichiers sont relativement statiques - c'est-à-dire beaucoup de lectures mais seulement quelques-unes et ils sont communs à tous les utilisateurs (fichiers site non fichiers par utilisateur), alors vous pourriez envisager de les mettre dans le Répertoire de contenu. Je crée souvent un sous-répertoire dans Content nommé static pour de tels fichiers, bien que je ne fournisse généralement pas un moyen de les éditer depuis le site (le contenu modifiable irait dans la DB). De cette façon, vous pouvez construire un chemin pour eux.

Pour ce que ça vaut, vous devriez probablement juste ouvrir le chemin et les lire, plutôt que d'utiliser un WebClient.

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

Note: vous devrez peut-être créer la UrlHelper, je ne pense pas que sa propriété sur le contrôleur.

+0

@tvanfosson - merci pour vos commentaires. Je suis d'accord que le déplacement de ces fichiers dans un db est la voie à suivre. cela va rendre la vie beaucoup plus simple – leora

+0

@tvanfosson - quel champ de type de données utiliseriez-vous dans le serveur SQL pour stocker ce ?? – leora

+0

@ooo - cela dépend de la taille attendue. J'ai fait varchar (x000) et varchar (max). – tvanfosson

Questions connexes