0

我需要从我的 MVC4 应用程序控制器调用 Silverlight 方法。

我使用对象标签加载 Silverlight,

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="50%" height="100%" style="border:1px solid #cdcdcd">
          <param name="source" value="ClientBin/HelloWorld.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="5.0.61118.0" />
          <param name="autoUpgrade" value="true" />
          <param name="onLoad" value="pluginLoaded" />
          <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none">
              <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>
        </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>

并调用 Silverlight 方法,我使用的是 JS 方法。

但我想从 MVC4-controllder 调用 silverlight 方法。

可能吗?如果是这样,我该怎么办?

请给我建议。

//Silverlight method
[ScriptableMember]
public void ShowAlertPopup(string message)
{
    MessageBox.Show(message, "Message From JavaScript", MessageBoxButton.OK);
}
4

1 回答 1

2

那是不可能的。Silverlight 和 JavaScript 一样在客户端上运行,而 MVC 在服务器上运行。这些是不同的机器。

如果您需要重用一个方法,您可以使用以下任一方法:

  1. 源代码共享(“将现有项目添加为链接”部分)
  2. 便携式图书馆项目
  3. RIA 服务共享代码功能

如果您唯一需要的是重用几个方法,我建议将它们移动到一个单独的文件中,然后将该文件链接到 2 个项目(一个 MVC 项目和一个 Silverlight 项目)。

一个重要的注意事项是,您只能重用使用 Silverlight 和 .NET 中存在的功能的代码。您不能从 MVC 应用程序使用 Silverlight 特定的功能(例如浏览器交互)。


如果您需要从服务器向客户端发送消息,则必须实现以下任一:

  1. 轮询
  2. 长轮询
  3. 服务器发送的事件
  4. 网络套接字

SignalR是一个用于简化任务的出色库。

于 2013-05-14T17:29:37.450 回答