剃刀:导航到新网页

时间:2018-10-18 11:25:30

标签: c# razor webbrowser-control razor-pages

我正在尝试使用C#剃须刀导航到另一个页面。这是我的代码。但是,根本没有任何反应。似乎该线程根本没有启动:

@using System.Windows.Forms;
@using System;
@using System.Threading;

@{
    var message = "";

    void runBrowserThread(Uri url)
    {
        var th = new Thread(()=>
        {
            var br = new WebBrowser();
            br.DocumentCompleted += browser_DocumentCompleted;
            Application.Run();
            br.Navigate(url);
        });
        th.SetApartmentState(ApartmentState.STA);
        th.Start();
    }

    void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var br = sender as WebBrowser;
    }

    Uri uri = new Uri("http://www.google.com");
    runBrowserThread(uri);
}



<body>
    <span id="myspan">@message</span>

</body>

1 个答案:

答案 0 :(得分:2)

在Web应用程序中开始输入using System.Windows.Forms时,您应该知道自己做错了。

WebBrowser控件在ASP.NET中没有位置。相反,您应该使用HttpClient class向要获取(或“抓取”)页面的HTTP请求。它有一个GetStringAsync method返回响应(如果您请求的资源是网页,则通常为HTML)。

一旦有了HTML,就有几种方法可以解析它。避免使用正则表达式或字符串方法。为此,请使用HtmlAgilityPackAngleSharp之类的软件包。它们针对解析DOM进行了优化。