将参数从silverlight传递到ASP.net

时间:2009-11-26 15:16:29

标签: c# asp.net silverlight web-applications

我在Silverlight上做了一个小游戏,记录用户在玩游戏时的分数。

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

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

提前致谢, 劳埃德

5 个答案:

答案 0 :(得分: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));

答案 1 :(得分:1)

这里我使用Uri Class将参数发送到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.net page_load或page init event

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

在上面的代码中我们接受asp.net中的silverlight参数但在[]括号中放置名称,因为它在Silverlight页面中使用,因为它区分大小写。

答案 2 :(得分:0)

通过ASP.NET,您的意思是ASP.NET Webforms应用程序吗?

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

答案 3 :(得分:0)

您需要从Silverlight应用程序向Web服务器发送数据,对吧?

你可以:

答案 4 :(得分:0)

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

或者,您可以从Silverlight拨打Web服务电话到您的后端。

我更喜欢后一种方法。这是第一次有点工作,但它也更通用,从长远来看通常会有更好的代码。

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