Используя C #, как я могу установить свойство Url для файла HTML в моем проекте? - PullRequest
2 голосов
/ 08 января 2009

У меня есть следующий код:

if (System.IO.File.Exists(htmlLocation))
{
    vEarthBrowser.ObjectForScripting = this;
    vEarthBrowser.Url = new Uri(htmlLocation);
}
else
{
    throw new Exception("HTML file not found!");
}

htmlLocation определяется как:

private string htmlLocation = "VirtualEarth.html"

Возможно, проект, от которого я получил это, был в рабочем состоянии, но я не изменил никакого кода. Если я запустил это, новая строка Uri () выдаст мне ошибку «Неверный URI: невозможно определить формат URI».

Файл присутствует (как указано при успешной передаче через метод Exists () в If). Как правильно ссылаться на URL-адрес в элементе управления WebBrowser, если вы хотите, чтобы он загружал файл HTML в каталог приложения по умолчанию?

Edit:

Я должен уточнить, что это проект winforms, а не веб-проект.

Ответы [ 2 ]

3 голосов
/ 08 января 2009

Попробуйте передать htmlLocation в Path.GetFullPath ().

Это автоматически возвращает абсолютный путь к файлу в текущем каталоге exe.

Вот вспомогательная функция, которую я написал:

public void LoadPageFromDisk(string filePath)
{
    Uri targetPage = null;

    string workingPageURI = filePath.Trim();

    workingPageURI = Path.GetFullPath(workingPageURI);

    if (Uri.TryCreate(workingPageURI, UriKind.RelativeOrAbsolute, out targetPage) == true)
    {

        webBrowserControl.Navigate(targetPage);
    }

}

Если для параметра filePath указано «localfile.htm», Path.GetFullPath вернет путь к нему, основанный на текущей выполняемой сборке, например: c: \ Program Files \ MyApp \ localFile.htm

Затем Uri.TryCreate преобразует абсолютные пути к файлам для вас в действительный файл: // Uri.

Наконец, WebBrowser.Navigate имеет перегрузку, которая принимает Uri. (UriKind.RelativeOrAbsolute необходим для того, чтобы TryCreate мог правильно проанализировать абсолютный путь к файлу.)

2 голосов
/ 08 января 2009

Ури не обрабатывает такие относительные пути. Для файла на вашем диске, вы захотите использовать формат file: // для создания URI. Объедините это с Path.GetFullPath (), и вы должны быть в отъезде.

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