2017-10-14 82 views
1

我需要幫助來獲取發佈的表單數據Dotnetbrowser。 事實上,我想上的按鈕,點擊此按鈕時添加監聽事件,所以我得到的數據,例如:donetbrowser HOWTO從Dotnetbrowser獲取發佈的表單數據?

<!DOCTYPE html> 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
    <body> 
    <h1>Hello!!!</h1><br> 
    <form 
     id="formTrying" 
     method="post" 
     action="http://localhost/MyWebSite/MyMvcView?MyQueryStringParam1=something&Param2=something" 
    > 
     <input name="txtSomething" type="text" value="Trying something..."><br> 
     <input type="submit" value="Submit..."> 
    </form> 
    </body> 
</html> 

當我點擊提交按鈕,我得到的價值「 txtSomething」。 或者當dotnetbrowser檢測到表單提交時,我從「txtSomething」中獲得值。

在此先感謝。 ;)

回答

2

您可以嘗試註冊一個OnClick事件偵聽器,以獲取有關點擊的相應DOM元素的通知。

在你的情況,這是可以做到如下圖所示:

browser.FinishLoadingFrameEvent += delegate (object sender, FinishLoadingEventArgs e) 
{ 
    if (e.IsMainFrame) 
    { 
     DOMDocument document = e.Browser.GetDocument(); 
     List<DOMNode> inputNodes = document.GetElementsByTagName("input"); 
     DOMInputElement submitElement = (DOMInputElement)inputNodes.LastOrDefault(); 

     DOMEventHandler domEvent = delegate (object s, DOMEventArgs args) 
     { 
      //Obtain the value of the txtSomething field 
      DOMInputElement txtSomethingElement = (DOMInputElement)document.GetElementByName("txtSomething"); 
      string value = txtSomethingElement.Value; 
      Console.Out.WriteLine("txtSomething value = " + value); 
     }; 

     submitElement.AddEventListener(DOMEventType.OnClick, domEvent, false); 
    } 
}; 
browser.LoadHTML(@"<!DOCTYPE html> 
<html lang='en' xmlns='http://www.w3.org/1999/xhtml'> 
    <body> 
    <h1>Hello!!!</h1><br> 
    <form 
     id='formTrying' 
     method='post' 
     action='http://localhost/MyWebSite/MyMvcView?MyQueryStringParam1=something&Param2=something' 
    > 
     <input name='txtSomething' type='text' value='Trying something...'><br> 
     <input type='submit' value='Submit...'> 
    </form> 
    </body> 
</html>"); 

下面的文章中詳細介紹瞭如何註冊DOM事件監聽解釋說: https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110034-listening-to-dom-events

此外,還有一篇文章,演示如何以編程方式設置表單域的值:https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110038-setting-input-field-value-working-with-form 。示例中的ValueChecked屬性是讀寫屬性,對應於JavaScript中提供的valuechecked屬性。

+0

問題是,INPUT的值被設置爲value =「Trying something ...」,當我使用它時,我有原始值,而不是更新值,初始值僅用於信息目的,但這不是我想要的值。如果用戶插入另一個值,我期望的是,我無法獲取這些信息,只有初始值。 –

+0

您是否使用'GetAttribute(「value」)'來獲取值?在這種情況下,您需要使用DOMFormControlElement.Value屬性。屬性和屬性之間的區別在這裏解釋:https://stackoverflow.com/questions/6003819/properties-and-attributes-in-html –

+0

謝謝,這正是我想要的。 –