Asp.net 从browsercontrol访问winform变量

Asp.net 从browsercontrol访问winform变量,asp.net,ajax,vb.net,Asp.net,Ajax,Vb.net,我有一个ASP.NETAjax应用程序。我希望通过winform中的browsercontrol打开它,并希望访问用户用来登录Web表单的变量(用户名)。加载时,我希望读取该用户名,并使用该用户名在browsercontrol上执行其余的网页代码 我的ASP.NETAjax已发布到内部web服务器,browsercontrol将加载该IP地址 有什么办法可以做到这一点吗 编辑: 我发现了javascript扩展名:window.external 我可以使用javascript从网页调用一个C#过

我有一个ASP.NETAjax应用程序。我希望通过winform中的browsercontrol打开它,并希望访问用户用来登录Web表单的变量(用户名)。加载时,我希望读取该用户名,并使用该用户名在browsercontrol上执行其余的网页代码

我的ASP.NETAjax已发布到内部web服务器,browsercontrol将加载该IP地址

有什么办法可以做到这一点吗

编辑:

我发现了javascript扩展名:window.external 我可以使用javascript从网页调用一个C#过程,这是一个开始,但我需要从C#中检索一个变量-这就是问题所在。我已经试过了

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

但是javascript错误表示该方法不能应用于对象

“将该名称存储在会话变量中,并在ajax调用中访问会话”

在ASP.Net应用程序中创建一个隐藏字段(或者如果该字段位于UI上的某个控件中,也可以使用)。将用户名或任何您想要共享的信息输入该字段

从WinForms程序中,您可以通过WebBrowser控件请求该字段,如下所示:

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

以上假设您有一个名为txtUsername的HTML元素,并设置了value属性。

您的答案如下:

  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
  <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>     
javascript部分应如下所示:

  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
  <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>     

函数userNameSet(name){
$(文档).ready(函数(){
//变量现在存在于WebBrowser客户端中,可以相应地使用
警报(名称);
});
}

答案参考资料:

我已编辑了问题-需要从asp访问windows窗体,而不是web窗体实际需要它反过来…在web应用程序中,我需要访问vb windows窗体中的变量,该窗体上有浏览器控件,这正是我要找的答案!