Razor:导航到新网页
Razor: Navigate to new webpage
我正在尝试导航到 C# razor 中的另一个页面。这是我的代码。但是什么也没有发生。似乎线程根本没有启动:
@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>
一旦您开始在 Web 应用程序中键入 using System.Windows.Forms
,您就应该知道自己做错了什么。
WebBrowser 控件在 ASP.NET 中没有位置。相反,您应该使用 HttpClient class to make an HTTP request to the page that you want to fetch (or "scrape"). It has a GetStringAsync method 即 returns 响应(如果您请求的资源是网页,通常 HTML)。
一旦你有了 HTML,有几种方法可以解析它。避免使用正则表达式或字符串方法。为此,请使用 HtmlAgilityPack or AngleSharp 之类的包。它们针对解析 DOM.
进行了优化
我正在尝试导航到 C# razor 中的另一个页面。这是我的代码。但是什么也没有发生。似乎线程根本没有启动:
@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>
一旦您开始在 Web 应用程序中键入 using System.Windows.Forms
,您就应该知道自己做错了什么。
WebBrowser 控件在 ASP.NET 中没有位置。相反,您应该使用 HttpClient class to make an HTTP request to the page that you want to fetch (or "scrape"). It has a GetStringAsync method 即 returns 响应(如果您请求的资源是网页,通常 HTML)。
一旦你有了 HTML,有几种方法可以解析它。避免使用正则表达式或字符串方法。为此,请使用 HtmlAgilityPack or AngleSharp 之类的包。它们针对解析 DOM.
进行了优化