从browsercontrol访问winform变量

时间:2015-01-05 09:46:56

标签: asp.net ajax vb.net

我在ASP.Net Ajax中有一个应用程序。我想通过winform中的browsercontrol打开它,我希望访问用户用来登录webform的变量(用户名)。在加载时,我想阅读该用户名,并使用该用户名在该浏览器控件上执行我的其余网页代码。

我的ASP.Net Ajax已发布到内部Web服务器,浏览器控件加载该IP地址。

有没有办法实现这一目标?

编辑:

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

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

但javascript错误表示该方法无法应用于该对象。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

以上假设您有一些名为txtUsername的HTML元素,其值属性已设置。