我在Silverlight上做了一个小游戏,记录用户在玩游戏时的分数。
我决定如果我能实现排行榜会更好,所以我在mySQL中创建了一个数据库来存储所有高分以及名称和日期。我在ASP.net中创建了一些与数据库的通信。这有效,我可以简单地在代码中插入和获取数据。
现在是时候将Silverlight项目与ASP.net数据库通信联系起来了,所以我可以将用户名和分数作为变量发送到我的ASP.net代码,然后将其上传到数据库。这就是我所需要的一切。当然必须有一种简单的方法来做这件事,我在研究时似乎找不到任何方法。
提前致谢, 劳埃德
答案 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,但我不会建议它;如果你不需要,为什么要倒退呢?