2009-11-26 67 views
0

我在Silverlight中做了一个小游戏,记录用户在玩游戏时的分数。将参数从silverlight传递到ASP.net

我认为如果我能实现一个排行榜会好很多,所以我在mySQL中创建了一个数据库来存储所有高分以及名称和日期。我在ASP.net中创建了一些与数据库的通信。这工作,我可以简单地在代码中插入和获取数据。

现在是时候将Silverlight项目与ASP.net数据库通信链接起来,因此我可以将用户名和分数作为变量发送到我的ASP.net代码,然后将其上传到数据库。这就是我需要的。当然,必须有一个简单的方法来做到这一点,我似乎无法在研究时找到任何方法。

由于提前, 劳埃德

回答

3

首先,您需要将Generic Handler添加到您的ASP.Net项目中。

public class Handler1 : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string userName = context.Request["user"]; 
     int score = int.Parse(context.Request["score"]); 
     //And store it in DB 
    } 
} 

后,您需要从Silverlight应用程序调用这个处理程序:

  string uri = HtmlPage.Document.DocumentUri.ToString(); 

     // Remove the web page from the current URI to get the root URI. 
     string rootUri = uri.Remove(uri.LastIndexOf('/'), 
     uri.Length - uri.LastIndexOf('/')); 

     string diggUrl = String.Format(rootUri + "/" + "test.ashx?user={0}&score={1}", "testuser", "234"); 

     // Initiate Async Network call to Digg 
     WebClient diggService = new WebClient(); 
     diggService.DownloadStringAsync(new Uri(diggUrl)); 
0

通过ASP.NET,你的意思是一个ASP.NET Web表单应用程序?

如果是这样,ASP.NET Webforms应用程序是一种构建UI的方法。您需要的是一个API,以便您的Silverlight应用程序以编程方式使用。为此,您可能需要考虑构建一个ASP.NET Webservice,它提供了一个基于HTTP的API。

0

一个简单的方法是让您的Silverlight代码通过将信息编码到查询字符串并调用服务器上的.aspx页面来创建REST URL。该页面不需要返回任何标记;它只会处理后端的东西并返回。

或者,您可以从Silverlight到您的后端进行Web服务调用。

我更喜欢后一种方法。这是第一次做更多的工作,但它也是更通用的目的,并且从长远来看使通用代码更好。

尽管技术上你可以使用JavaScript,但我不会建议它;如果你不需要,为什么要在技术上倒退呢?

1

这里我使用URI类发送参数asp.net,但你只能发送字符串格式。

//此代码写在Silverlight按钮上单击事件。

Uri myURI = new Uri(HtmlPage.Document.DocumentUri,String.Format("Report.aspx?brcd={0}&acc={1}&user={2}", Brcd, Acc, User)); HtmlPage.Window.Navigate(myURI, "_blank"); 

下面的代码写在Asp上。在上面的代码中网的Page_Load或页面init事件

Brcd = Request.QueryString["brcd"];// brcd value accept here. 
acc= Request.QueryString["ACC"];` 
user= Request.QueryString["User"]; 

我们接受Silverlight的参数在asp.net但在[]括号把名字,因为它是在Silverlight网页,因为它区分大小写使用。