2015-01-05 54 views
1

我在ASP.Net Ajax中有一個應用程序。我想通過一個winform的browsercontrol打開它,我想訪問用戶用來登錄到webform的變量(用戶名)。在加載時,我想閱讀該用戶名,並使用該用戶名在瀏覽器控件上執行我的網頁代碼的其餘部分。從browsercontrol訪問winform變量

我的ASP.Net Ajax已發佈到內部Web服務器,並且browsercontrol加載該IP地址。

有什麼辦法可以做到這一點?

編輯:

我已經發現了JavaScript擴展:的window.external 我可以調用使用JavaScript和它的網頁,這是一個開始的C#程序,但我需要檢索從C#中varaible - 這是哪裏出了問題進來我已經試過了

var name = function window.external.GetGlobalVariable(MyGlobalProcedure, "Cannot Get Value"); 

但JavaScript錯誤說的方法不能適用的對象。

回答

1

你的答案應該如下:

Public Class Form1 

    Dim GlobalVar As String = "Your Name" 
    Dim YourBrowser As New WebBrowser 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    YourBrowser.Url = New Uri("Your URL address") 
    AddHandler YourBrowser.DocumentCompleted, AddressOf PageLoadComplete 
    End Sub 

    'The invokescript will only work once the HTML has finished loading itself into your WebBrowser 
    Sub PageLoadComplete() 
    'Must declare the string inside an array as the invokescript only allows an object to be sent 
    Dim VarToSend As String() = {GlobalVar} 
    YourBrowser.Document.InvokeScript("yourJavascriptfunction", VarToSend) 
    End Sub 

JavaScript部分應如下所示:對於答案

<script type="text/javascript" language="javascript">   
    function userNameSet(name) {         
     $(document).ready(function() { 
      //variable now exists inside your WebBrowser client and can be used accordingly now 
      alert(name); 
     }); 
    } 
    </script>  

參考文獻:http://www.dotnetcurry.com/showarticle.aspx?ID=194

+0

這就是我正在尋找的答案! – Killua

0

「在會話變量中存儲的名稱和您的Ajax調用訪問會話」

+0

我已經編輯了問題 - 需要訪問從asp窗口窗體,而不是一個webform – Killua

0

在您的ASP.Net應用程序創建一個隱藏字段(或者如果它是在一定的控制,工程也UI某處) 。將用戶名或任何你想分享的信息放入該字段。

從您的WinForms程序,你可以通過這樣的WebBrowser控件要求現場:

MessageBox.Show(WebBrowser1.Document.GetElementById("txtUsername").GetAttribute("value")) 

上述假設你有一些所謂的txtUsername與設定值屬性的HTML元素。

+0

實際上需要它的另一種方式...在Web應用程序內我需要訪問變量一邊vb窗體,其中有瀏覽器控制它 – Killua