有没有办法从Asp.net MVC4 controllder中调用Silverlight方法?

问题描述:

我需要从我的MVC4应用程序控制器调用Silverlight方法。有没有办法从Asp.net MVC4 controllder中调用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); 
} 

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

如果您需要重用的方法,你可以使用两种:

  1. Source code sharing(部分 '添加现有项目为纽带')
  2. Portable Library project
  3. RIA Services Shared Code features

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

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


如果你需要从你的服务器发送消息给你的客户,你必须实现任一:

  1. 轮询
  2. 长轮询
  3. 服务器发送的事件
  4. 的WebSockets

SignalR i是一个简化任务的好图书馆。