如何在不使用Web服务调用的情况下初始化silverlight控件

我正在开发一个asp.net mvc Web应用程序,它充分利用了jquery和渐进增强原理。

我需要一个复杂的控件,需要访问.net代码才能运行(使用多个类的reflection)。 选择是在javascript中复制此代码(如果可能,自动生成),或使用silverlight。 我将使用silverlight选项(至少对于V1)。

我的控件的pre-silverlight版本开始生活,因为一些简单的html元素被jquery修改为更丰富的版本。 然而,我看到的Silverlight控件的示例都会在页面加载后回调服务器以获取数据。 或者,如果此数据很简单,则使用initParams参数。

我的初始化数据要复杂得多,我认为initParams可以使用,我不想回服务器,因为我已经有了这些数据。

那么我最好的选择是什么?

你可以把任何你想要的东西放到initParams中。 它只是一个字符串,但如果你有一个复杂的对象要传递给silverlight控件,那么你可以将对象序列化为一个字符串,将其复制到initParams中,然后在silverlight控件中反序列化它。

或者,您确实知道可以通过javascript与Silverlight控件中的托管代码进行通信(函数必须使用ScriptableMember属性标记)?

更不用说你不应该关注从silverlight控件回到WCF或asmx webservice的调用 – 根据我的经验,除非你传输大量数据,否则调用非常快。