[英]Passing parameters from silverlight to ASP.net
我已经在Silverlight中制作了一个小游戏,可以记录用户玩游戏时的得分。
我决定,如果可以实施排行榜,那就更好了,因此我在mySQL中创建了一个数据库,用于存储所有高分以及姓名和日期。 我已经创建了一些与ASP.net中的数据库的通信。 这行得通,我可以简单地在代码中插入并获取数据。
现在是时候将silverlight项目与ASP.net数据库通信链接起来了,因此我可以将用户名和得分作为变量发送到我的ASP.net代码中,然后将其上传到数据库中。 这就是我所需要的。 当然,必须有一种简便的方法来进行研究,但是我似乎在研究时找不到任何方法。
在此先感谢,劳埃德
首先,您需要将通用处理程序添加到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));
在这里,我使用Uri类将参数发送到asp.net,但是您只能发送字符串格式。
//此代码写在Silverlight Button Click Event上。
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或页面初始化事件上
Brcd = Request.QueryString["brcd"];// brcd value accept here.
acc= Request.QueryString["ACC"];`
user= Request.QueryString["User"];
在上面的代码中,我们在asp.net中接受silverlight参数,但在[]括号中放置了名称,因为它区分大小写,因此在silverlight页面中使用了该名称。
所谓ASP.NET,是指ASP.NET Webforms应用程序吗?
如果是这样,则ASP.NET Webforms应用程序是一种构建UI的方法。 您需要一个API,Silverlight应用程序才能以编程方式使用。 为此,您可能需要考虑构建ASP.NET Web服务,该服务通过HTTP提供API。
从Silverlight应用程序向Web服务器发送数据需要什么,对吗?
您可以:
一种简单的方法是让Silverlight代码通过将信息编码到查询字符串中并在服务器上调用.aspx页来创建REST URL。 该页面不需要返回任何标记。 它只会处理后端的东西并返回。
或者,您可以从Silverlight到后端进行Web服务调用。
我更喜欢后一种方法。 第一次需要做更多的工作,但它也更通用,从长远来看,通常可以使代码更好。
尽管从技术上讲您可以使用JavaScript,但我不建议您使用。 如果不需要,为什么还要落后于技术?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.