有没有办法从Asp.net MVC4控制器调用Silverlight方法?

时间:2013-05-13 19:39:44

标签: silverlight asp.net-mvc-4

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

我使用object tag

加载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);
}

1 个答案:

答案 0 :(得分:2)

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

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

  1. Source code sharing(“将现有项目添加为链接”一节)
  2. Portable Library project
  3. RIA Services Shared Code features
  4. 如果你唯一需要的是重用几种方法,我建议将它们移到一个单独的文件中,然后将文件链接到2个项目(一个MVC项目和一个Silverlight项目)。

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


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

    1. 轮询
    2. 长轮询
    3. 服务器发送的事件
    4. 的WebSockets
    5. SignalR是一个很好的库,可以简化任务。