【问题标题】:How do you make a ASP.NET Control talk to a Silverlight app on the same page in C#如何在 C# 中使 ASP.NET 控件与同一页面上的 Silverlight 应用程序对话
【发布时间】:2008-11-05 01:04:17
【问题描述】:

例如:

首先,假设我有一个带有 Windowless=true 的 Silverlight 应用程序,这样我就可以在它上面放置 ASP.NET 控件。然后我在页面上放置一个 ASP.NET 按钮。当用户按下 ASP.NET 按钮时,我怎么能说 Silverlight 应用程序中的控件文本发生变化?如何从捕获 ASP.NET 按钮单击的 C# 代码向 Silverlight 应用发送更新消息?

谢谢, 杰夫

【问题讨论】:

    标签: c# asp.net silverlight silverlight-2.0


    【解决方案1】:

    据我所知,根据您的问题,Silverlight 应用程序正在 Web 浏览器中运行,而您已将其嵌入到 asp.net 页面中?您在页面上拖动的 asp.net 按钮的代码位于服务器上,并以 html 格式发送到 Web 浏览器。当您单击页面上的按钮时,它会将表单数据提交回 ASP.NET 解释并调用您的按钮单击代码的服务器。由于该代码在服务器上执行,因此无法访问 silverlight 应用程序。如果您确实需要直接在客户端上与 silverlight 应用程序交互,您可以在浏览器中使用 javascript。

    这是一个基本示例: http://blogs.vertigo.com/personal/ralph/Blog/archive/2008/05/15/call-silverlight-from-javascript-call-javascript-from-silverlight.aspx

    【讨论】:

      【解决方案2】:

      根据记忆,您需要从您的 silverlight 应用程序中公开一个可编写脚本的成员,例如:

      [ScriptableMember()]
      public void ChangeText(string newText)
      {
          // Update your text control here
      }
      

      并在构造函数中注册它以从 javascript 编写脚本:

      public MySilverlight()
      {
          InitializeComponent();
          HtmlPage.RegisterScriptableObject("MyObject", this);
      }
      

      然后你可以从 javascript 调用它;

      function ChangeText()
      {
          var yourObject = getElementById("yourObjectID");
          yourObject.Content.MyObject.ChangeText("New Text");
      }
      

      然后只需连接按钮的客户端单击以调用 javascript ChangeText 方法。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 2014-06-26
        • 2017-08-03
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        相关资源
        最近更新 更多