惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
博客园_首页
量子位
博客园 - 司徒正美
S
SegmentFault 最新的问题
J
Java Code Geeks
小众软件
小众软件
博客园 - 【当耐特】
The Register - Security
The Register - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
Cyberwarzone
Cyberwarzone
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
F
Full Disclosure
D
DataBreaches.Net
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 最新话题
云风的 BLOG
云风的 BLOG
C
Check Point Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
W
WeLiveSecurity
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
T
Tor Project blog
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Security Affairs
SecWiki News
SecWiki News

博客园 - WEBBER

SQL语句中使用变量作为条件。遇到NULL时怎么写 checkbox单选 T4MVC Documentation page(转) ASIHTTPRequest 详解, http 请求终结者 (转) ASP.NET版Memcached监控工具(转) 完整的DataTable和list转换 老外写的(转) 技巧:使用User Control做HTML生成(转) asp.net取得Silverlight中的值(转) IIS6 Silverlight部署經驗(转) c#四种eval方法(转) - WEBBER - 博客园 一行内文本超出指定宽度溢出的处理 sql2005数据同步技术(数据订阅,发布)转 C# 域用户操作(转) 看到了一些面试题,发给大家,看看多少人能都全回答上来 Membership角色与权限管理 (转) 我的跳槽求职经验谈(转) IHttpHandler的妙用(2):防盗链!我的资源只有我的用户才能下载 (转) JavaScript组件之JQuery(A~Z)教程(基于Asp.net运行环境)(转) 说说大型高并发高负载网站的系统架构 (转)
Silverlight跟ASP.NET之間要如何溝通querystring(转)
WEBBER · 2009-09-29 · via 博客园 - WEBBER

转自:http://www.dotblogs.com.tw/lolota/archive/2008/12/16/6410.aspx
我們知道Silverlight可以「嵌」在aspx中,但是你有想過Silverlight跟ASP.NET之間要如何溝通呢(除了1.0就可以用的AJAX部份之外)?

我們可以試想一下有哪些方法?

透過Session? 這不可行,因為Silverlight runtime沒有辦法處理.

透過QueryString? 嗯嗯, 看起來是可行的。

我們來實做看看:

1.

首先,開啟Visual Studio 2008,然後新增一個Silverlight專案(如果不知道如何新增,請參考 [Silverlight]Hello Siverlight ----- Day 1)。

2.

在Page.xaml中,將程式碼設定如下(設定一個TextBlock跟兩個Button,一個用來傳QueryString,另一個用來接收QueryString):

<UserControl x:Class="SL_Test1_Site.Page"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   Width="400" Height="300" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">

    <Grid x:Name="LayoutRoot" Background="White">

        <TextBlock x:Name="uxtxt" Text="Hello" VerticalAlignment="Top" Height="48" Margin="120,24,128,0"/>

        <Button x:Name="uxSetQueryString" Click="uxSetQueryString_Click" Content="Set QueryString" Width="100" Height="30" HorizontalAlignment="Left" Margin="92,88,0,0" VerticalAlignment="Top" d:LayoutOverrides="Width, Height"/>

        <Button x:Name="uxGetQueryString" Click="uxGetQueryString_Click" Content="Get QueryString" Width="100" Height="30" Margin="0,88,88,0" d:LayoutOverrides="Width, Height" VerticalAlignment="Top" HorizontalAlignment="Right"/>

    </Grid>

</UserControl>

3.

在傳送QueryString的Button的Click事件中,輸入下列程式碼:

private void uxSetQueryString_Click(object sender, RoutedEventArgs e)

{

    System.Windows.Browser.HtmlPage.Window.Eval("location='" + Application.Current.Host.Source.AbsoluteUri.Replace(Application.Current.Host.Source.AbsolutePath, "") + "/Default.aspx?ID=100';");

}

我們可以透過System.Windows.Browser.HtmlPage.Window.Eval方法來幫我們執行Javascript,然後透過Javascript來將網頁導向。

所以,如果你要使用Javascript,也可以透過下列方式呼叫:

System.Windows.Browser.HtmlPage.Window.Eval("alert('Hello Silverlight!!');");

還有,也可以透過下列方式導向:

Uri direct = new Uri("http://www.google.com/Default.aspx?ID=100';");

HtmlPage.Window.Navigate(direct);

4.

然後我們在.web專案的Default.aspx中,放置兩個Button,一個用來設定QueryString,一個用來接收QueryString。

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="接收QueryString" />

<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="設定QueryString" />

然後在Button1_Click事件中,撰寫下列程式碼:

protected void Button1_Click(object sender, EventArgs e)

{

  Response.Write("這是從Silverlight接收的參數:" + this.Request.QueryString["ID"].ToString()); 

}

5.

按下F5執行。

image 

6.

同樣地,在Default.aspx中,設定另一個按鈕的Click事件為:

protected void Button2_Click(object sender, EventArgs e)

{

   Response.Redirect(Request.Url.AbsoluteUri + "?ID=999");

}

Silverlight接收QueryString的Button Click事件則為:

private void uxGetQueryString_Click(object sender, RoutedEventArgs e)

{

     uxtxt.Text = "ID: " + HtmlPage.Document.QueryString["ID"].ToString();

}

7.

按下F5執行。

image

透過這一個簡單的範例,讓我們知道Silverlight跟ASP.NET可以透過Querystring來作溝通。

也可以透過Cookie來溝通(有興趣的朋友可以試著去玩看看)。

程式碼下載

試煉大會,我們下次見!!