User Tools

Site Tools


prog:csharp:250318-001:index

如何於 InvokeScript() 時,設定先前取得的__VIEWSTATE 值 (2025-03-18)

  • 在 C# 的 WebBrowser 控制項中,若要使用 InvokeScript() 方法來設置先前獲取的 __VIEWSTATE 值,你可以通過 JavaScript 來操作 DOM。以下是具體的步驟和示例代碼:

AI Answer

步驟

  • 1, 獲取 __VIEWSTATE 值:如前所述,使用 GetElementById 獲取並保存 __VIEWSTATE 的值。
  • 2, 使用 InvokeScript 設置 __VIEWSTATE:在網頁加載完成後,使用 JavaScript 來設置 __VIEWSTATE 的值。

示例代碼

  • 以下是一個完整的示例,展示如何在 WebBrowser 控制項中獲取和設置 __VIEWSTATE 值:
  • using System;
    using System.Windows.Forms;
    
    namespace WebBrowserExample
    {
        public partial class Form1 : Form
        {
            private string viewStateValue;
    
            public Form1()
            {
                InitializeComponent();
                webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
                webBrowser1.Navigate("https://your-target-url.com");
            }
    
            private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                // 確保網頁已經加載完成
                if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
                {
                    // 獲取 __VIEWSTATE
                    var viewStateElement = webBrowser1.Document.GetElementById("__VIEWSTATE");
                    if (viewStateElement != null)
                    {
                        viewStateValue = viewStateElement.GetAttribute("value");
                        MessageBox.Show("獲取到的 VIEWSTATE: " + viewStateValue);
                        
                        // 設置新的 __VIEWSTATE 值
                        SetViewState(viewStateValue);
                    }
                    else
                    {
                        MessageBox.Show("__VIEWSTATE 元素未找到。");
                    }
                }
            }
    
            private void SetViewState(string newViewState)
            {
                // 使用 JavaScript 設置 __VIEWSTATE 的值
                string script = $"document.getElementById('__VIEWSTATE').value = '{newViewState}';";
                webBrowser1.Document.InvokeScript("eval", new object[] { script });
    
                // 你可以在這裡進行其他操作,比如提交表單
                // webBrowser1.Document.GetElementById("submitButton").InvokeMember("click");
            }
        }
    }

說明

  • SetViewState(string newViewState):這個方法使用 JavaScript 設置 __VIEWSTATE 的值。
  • InvokeScript("eval", new object[] { script }):這行代碼執行 JavaScript 腳本,將 __VIEWSTATE 的值設置為新的值。
  • 你可以在設置 __VIEWSTATE 之後,進行表單提交或其他操作。

注意事項

  • 確保 newViewState 的值是有效的,並且符合網頁的要求。
  • 如果需要進行表單提交,確保在設置 __VIEWSTATE 後,適當地觸發提交事件。
  • 這樣你就能夠在 InvokeScript() 時設置先前獲取的 __VIEWSTATE 值了!
  • 2 person(s) visited this page until now.

prog/csharp/250318-001/index.txt · Last modified: 2025/03/18 09:05 (external edit)