Ссылка Просмотр каталога в asp.net mvc - PullRequest
0 голосов
/ 26 мая 2010

У меня есть несколько 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 Ответ

1 голос
/ 26 мая 2010

Если бы это был я, я бы сохранил информацию в базе данных. Это намного проще, и, с моей точки зрения, не имеет большого значения, используется ли дисковое пространство на сервере базы данных или веб-сервере. Если, с другой стороны, файлы относительно статичны - то есть, много операций чтения, но только несколько операций записи и , они являются общими для всех пользователей (файлы сайта, а не файлы для каждого пользователя), тогда вы можете рассмотреть положить их в каталог содержимого. Я часто создаю подкаталог в 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, я не думаю, что это свойство на контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...