我想的div的innerText称为album_notes。 正如我在其他许多地方一样,我的代码如下:
public void Album_Notes(HtmlAgilityPack.HtmlDocument bandHTML)
{
this.lblNotes.Text = bandHTML.DocumentNode.Descendants("div").First(x => x.Id == "album_notes").InnerHtml;
TextBlock的,lblNotes,没有文字的结果结束。 如果我打开快速监视,而在调试模式下,我得到以下结果:
表达式不能包含lambda表达式
即使我已经使用了完全相同的语法等至少10倍于其他地方相同的应用程序。 奇怪的是,它实际上并没有引发错误或任何东西,它只是填充一个空字符串TextBlock的。
这有什么错我的代码?
该Expression cannot contain lambda expressions
消息没有来自HTMLAgilityPack而是从快速监视功能。 基本上,lambda表达式仅仅是一个syntaxic糖:在编译时拉姆达被转换为“真实的”的功能。 因为它的东西在编译期间发生的事情,你不能在运行时创建一个全新的拉姆达(即,在快速监视窗口)。
现在的问题是:为什么是lblNotes.Text
空? 不幸的是,我不知道没有看到的HTML代码。 不过,如果没有错误,这意味着“album_notes”分区已被发现(否则你将有一个空引用除外)。 因此, InnerHtml
财产可能是空的。
您可以检查通过重写代码了一下:
public void Album_Notes(HtmlAgilityPack.HtmlDocument bandHTML)
{
var div = bandHTML.DocumentNode.Descendants("div").First(x => x.Id == "album_notes");
this.lblNotes.Text = div.InnerHtml;
}
这样一来,如果你把一个断点就上线,你可以检查的价值div
和div.InnerHtml
在快速监视窗口。