在Silverligh中调用J“.NET研究”avascript (四种调用方法+简单与复杂参数的传递)
2011-10-18 22:39
561 查看
在本文我们将一起学习如何在Silverlight后台代码中调用javascritp脚本。Silverlight中内置了对于HTML、客户端脚本等的支持。很多情况下,我们编写的Web应用程序中用了一些JavaScript或者AJAX框架,我们可以在Silverlight调用某些脚本方法,或者说在Silverlight中触发某个脚本的执行。
本文将示例如何调用Silverlight脚本, 要使用此功能,我们需要引入命名空间:
using System.Windows.Browser; //引入此命名空间
调用javascript脚本方法有以下四种(本例中我们将在第二种参数处理示例中演示如何使用它们):
方法一:直接调用脚本对象
方法二:使用GetProperty获取脚本对象
方法三:使用HtmlPage.Window.Eval直接执行javascript语句
方法四:使用CreateInstance创建脚本对象
这里,我们示例如何传递和传回:
1、简单参数与结果(本例:传入两个整数,返回Float结果)
2、复杂参数与结果(本例: 传入自定义的PlusNumbers类实例,传回自定义的PlusResults类实例结果)
首先,我们创建新的Silverlight应用程序SLcallJSfunction。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser; //引入此命名空间
namespace SLcallJSfunction
对应的Javascript代码如下:
<script type="text/javascript" >
//说明: arg是传入的参数,它是在SL后台代码定义的类
//myResult是计算结果,它也是SL后台代码定义的类,要使用它之前必须在SL代码中进行注册
//注册方法是:HtmlPage.RegisterCreateableType("JSresultType",typeof(PlusResults)); //PlusResults是后台代码定义的类
function Plus(arg) //把类实例(arg)作为参数对象传入到Javascript代码中
{
var myXaml = $get("Xaml1");
var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例(此类在SL中定义)
myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员
return myResult; //返回结果类
}
myJsPlus = function(arg)
{
}
myJsPlus.prototype.myPlus = function(arg)
{
var myXaml = $get("Xaml1");
var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例(此类在SL中定义)
myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员
return myResult; //返回结果类
}
</script>
SLcallJSfunctionTestPage.aspx页面代码如下:
运行时,在两个文本输入框内分别输入两上整数,然后点击按钮,运行效果如下:
本文将示例如何调用Silverlight脚本, 要使用此功能,我们需要引入命名空间:
using System.Windows.Browser; //引入此命名空间
调用javascript脚本方法有以下四种(本例中我们将在第二种参数处理示例中演示如何使用它们):
方法一:直接调用脚本对象
方法二:使用GetProperty获取脚本对象
方法三:使用HtmlPage.Window.Eval直接执行javascript语句
方法四:使用CreateInstance创建脚本对象
这里,我们示例如何传递和传回:
1、简单参数与结果(本例:传入两个整数,返回Float结果)
2、复杂参数与结果(本例: 传入自定义的PlusNumbers类实例,传回自定义的PlusResults类实例结果)
首先,我们创建新的Silverlight应用程序SLcallJSfunction。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser; //引入此命名空间
namespace SLcallJSfunction
对应的Javascript代码如下:
<script type="text/javascript" >
//说明: arg是传入的参数,它是在SL后台代码定义的类
//myResult是计算结果,它也是SL后台代码定义的类,要使用它之前必须在SL代码中进行注册
//注册方法是:HtmlPage.RegisterCreateableType("JSresultType",typeof(PlusResults)); //PlusResults是后台代码定义的类
function Plus(arg) //把类实例(arg)作为参数对象传入到Javascript代码中
{
var myXaml = $get("Xaml1");
var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例(此类在SL中定义)
myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员
return myResult; //返回结果类
}
myJsPlus = function(arg)
{
}
myJsPlus.prototype.myPlus = function(arg)
{
var myXaml = $get("Xaml1");
var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例(此类在SL中定义)
myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员
return myResult; //返回结果类
}
</script>
SLcallJSfunctionTestPage.aspx页面代码如下:
<%@ Page Language="C#" AutoEventWireup="true" %> <%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;"> <head runat="server"> <title>SLcallJSfunction</title> <script type="text/javascript" >上海闵行企业网站制作 #000000;"> //说明: arg是传入的参数,它是在SL后台代码定义的类 //myResult是计算结果,它也是SL后台代码定义的类,要使用它之前必须在SL代码中进行注册 //注册方法是:HtmlPage.RegisterCreateableType("JSresultType",typeof(PlusResults)); //PlusResults是后台代码定义的类 function Plus(arg) //把类实例(arg)作为参数对象传入到Javascript代码中 { var myXaml = $get("Xaml1"); var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例 (此类在SL中定义) myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员 return myResult; //返回结果类 } myJsPlus = function(arg) { } myJsPlus.prototype.myPlus = function(arg) { var myXaml = $get("Xaml1"); var myResult = myXaml.content.services.createObject("JSresultType"); //创建一个在javascript中的类实例 (此类在SL中定义) myResult.RetValue = arg.X + arg.Y; //参数类成员进行运算后,结果赋值给结果类成员 return myResult; //返回结果类 } </script> </head> <body style="height:100%;margin:0;"> <form id="form1" runat="server" style="height:100%;"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div style="height:100%;"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SLcallJSfunction.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> </div> </form> </body> </html>
运行时,在两个文本输入框内分别输入两上整数,然后点击按钮,运行效果如下:
相关文章推荐
- 一起谈.NET技术,在Silverligh中调用Javascript (四种调用方法+简单与复杂参数的传递)
- SilverLight学习笔记--Silverligh之在SL中调用Javascript (四种调用方法+简单与复杂参数的传递)
- SilverLight学习笔记--Silverligh之在Javascript中调用.NET(包括简单参数和复杂参数的操作)
- JS调用OC简单实例-传递一个或者多个参数给oc方法
- free pascal(lazarus)版的android JNI进阶篇:反向调用java的方法并传递复杂参数
- js调用方法传递变量作为参数的问题
- 关于Java中方法调用时参数的传递
- .net C#中页面之间传值传参的六种方法(转) 传递简单参数
- C#后台调用前台javascrip“.NET研究”t的五种方法
- ASP.NET - Web API,从简单类型到复杂类型的参数传递用例,以及传递简单string类型的解决办法
- 用javascript实现html页面之间的参数传递的四种方法
- Javascript 调用C# 代码并传递参数的两种方法
- PHP页面间参数传递的四种方法详解
- Consul-- 复杂参数调用与传递
- 一种VB窗体之间简单的参数传递方法
- 独立exe程序之间传值的方法传递com口 传递参数 调用的方法(Wince程序)
- Go语言中函数的参数传递与调用的基本方法
- .net页面间的参数传递简单实例
- C++ 调用Python文件方法传递字典参数并接收返回值
- 深入理解Java方法调用的参数传递