您的位置:首页 > Web前端 > JavaScript

Silverlight中JS访问C#代码学习

2010-07-15 23:15 211 查看
 Silverligh中System.Windows.Browser命名空间下提供了供JS和SL后台代交互的类.

 

ScriptableTypeAttribute:指定类或者结构体能被JS访问的能力.

 

ScriptableMemberAttribute:指定一个方法,属性或者事件能被JS访问的能力.

 

HtmlPage.RegisterScriptableObject("hwj383 ", this);//如果这个类中没有可以Scriptable的对象会在运行时出异常
[ScriptableType]//标记此类中的所有公有且非静态方法和属性都能访问,而类里面的成员不必再加上ScriptableMember标记.
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
HtmlPage.RegisterScriptableObject("hwj383", this);//如果这个类中没有可以Scriptable的对象会在运行时出异常
//HtmlPage.RegisterCreateableType("hwj383", this.GetType());//Exception
//HtmlPage.RegisterCreateableType("hwj383", typeof(hwj));
}

public void JsCallTest()
{
HtmlPage.Window.Alert("Js调用测试");
}
}


 

客户端通过为SL的指定一个Id如:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="100%" id="SilverlightPlugin">


 

然后通过:

客户端对象.Content.注册名.方法/属性来访问;

var Plugin = document.getElementById("SilverlightPlugin");

如本例是: Plugin.Content.hwj383.JsCallTest();

 

[ScriptableMember(ScriptAlias = "AliasName")] //指定一别名,客户端通过别名来访问

 

 

 

对自定义类的访问

 

[ScriptableType]
public class hwj
{
//[ScriptableMember]//不必加了,类上加了ScriptableType,默认可以访问
public int Add(int i, int k)
{
return i + k;
}
}

HtmlPage.RegisterCreateableType("hwj", typeof(hwj));//注册一个客户端可以访问的对象 hwj


 

客户端可以通过:

 

var v = SilverlightPlugin.Content.services.createObject("hwj");//创建一个对象
v.Add(1, 2);//调用其方法

 

未完,待续......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息