2010-07-28 80 views
1

我使用HtmlElement通过它的ID获取HTML元素并试图显示此值并将其返回(作为字符串)。问题是它将它视为一个对象。我如何获得C#/ C++的HTML字段的值

我在代码与具有HTML文件中的web浏览器:

<label id="Address" text="asdf"></label> 

在我的C++头文件我有

HtmlElement^ element = this->webBrowser1->Document->GetElementById("Address"); 
String^ asdf = element->GetAttribute("text"); 
return asdf; 

这建立,但是当我启动程序,我“获取异常”对象引用未设置为对象的实例。“

我无法使用System :: Convert.ToString();无论如何,它不会让我用这个建立起来。

任何建议表示赞赏。谢谢。

+0

C#或VC++?我知道C#中没有使用' - >'运算符。 – 2010-07-28 16:18:35

+0

@Nathan:http://msdn.microsoft.com/en-us/library/s8bz4d5h.aspx,虽然我个人仍然对他在做什么感到困惑。 – 2010-07-28 16:19:04

+0

@Nathan:C++对不起,我搞砸了。这是在通过我的C#程序访问的头文件中。 @Yuriy:尝试访问我的C#程序中的webBrowser中的HTML元素的值。 元素是: 通过C++头文件我试图访问文本“asdf”,它的ID为“Address” – mastofact 2010-07-28 16:23:24

回答

1

OK我终于切换项目,一段时间之后,回来之后想通了这个问题。

我在头文件中忘记了'System :: Object^sender'部分。现在,所有的HtmlElement东西的作品:

市民:系统:字符串^的getAddress(系统:对象^发件人)

感谢您的帮助。

2

哪一行引发异常 - 第一个还是第二个?

该代码中有4个或5个地方可能会引发该异常,我会先着手确定它是哪一个。

+0

对不起,这行代码会抛出异常。 String^asdf = element-> GetAttribute(“text”); – mastofact 2010-07-28 16:21:50

+2

@John H:然后你的标签没有找到,元素为空。 – 2010-07-28 16:23:57

+0

@Jesper Palm:谢谢,我不得不添加来检查它是否为空。我想是的,它现在没有找到我的标签/元素...... :( – mastofact 2010-07-28 21:34:02

0

只要使用(我已经改变了文本的位置注)你的标签内的“RUNAT”属性:

<label id="Address" runat="server">asdf</label> 

然后,在代码的.cs,你使用的文本属性中的文本目的。

Response.Write(Address.Text); 

- >操作符不用于您正在尝试执行的操作。它与指针结合使用。检查此文件:-> Operator

+0

我认为他正在使用c + +和WebBrowser控件,不是ASP.NET – 2010-07-28 16:33:40

+0

嗯,你说得对,我已经阅读了标题中的“C#”,我可能是盲目的,现在我看到了C++ =/ – Fabiano 2010-07-28 16:37:42

+0

你看到了正确的,我从C#编辑到C++。 – mastofact 2010-07-28 16:39:47

0

这是使用C#的假设下

你应该能够抓住阿霍德代码标签的后面加上runat="server"属性标签(即使它只是一个普通的旧HTML标签)。

在后端,您将可以通过访问它:

this.Address.InnerText 

的innerText是让来自HTML标签的文本在C#中,没有一个文本属性的正确方法。因此,而不是有这样的:

<label id="Address" text="asdf"></label> <!-- broke --> 

使用这种与代码隐藏我提到:

<label id="Address" runat="server">asdf</label> <!-- works great -->