English 中文(简体)
如何使用 C# 使 ASP.NET 控件与同一页面上的 Silverlight 应用程序进行通信?
原标题:
  • 时间:2008-11-05 01:04:17
  •  标签:

例如:

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

Thanks, Jeff

最佳回答

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

Here is a basic example: http://blogs.vertigo.com/personal/ralph/Blog/archive/2008/05/15/call-silverlight-from-javascript-call-javascript-from-silverlight.aspx

问题回答

From memory, you need to expose a scriptable member from your silverlight application, eg:

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

and register it for scripting from javascript in the constructor:

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

You can then invoke it from javascript as;

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

Then just wire up the button s client click to invoke the javascript ChangeText method.

Hope this helps.





相关问题
热门标签