【问题标题】:Passing parameters from silverlight to ASP.net将参数从 silverlight 传递到 ASP.net
【发布时间】:2009-11-26 15:16:29
【问题描述】:
我用 Silverlight 制作了一个小游戏,记录用户在玩游戏时的得分。
我认为如果我可以实现排行榜会更好,所以我在 mySQL 中创建了一个数据库来存储所有高分以及姓名和日期。我在 ASP.net 中创建了一些与数据库的通信。这很有效,我可以简单地在代码中插入和获取数据。
现在是时候将 silverlight 项目与 ASP.net 数据库通信链接起来了,所以我可以将用户名和分数作为变量发送到我的 ASP.net 代码,然后它会将其上传到数据库。这就是我所需要的。肯定有一种简单的方法可以做到这一点,我只是在研究时似乎找不到任何方法。
提前致谢,
劳埃德
【问题讨论】:
标签:
c#
asp.net
silverlight
web-applications
【解决方案1】:
首先,您需要将通用处理程序添加到您的 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));
【解决方案2】:
这里我使用 Uri Class 向 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 页面中使用,因为它区分大小写。
【解决方案3】:
您所说的 ASP.NET 是指 ASP.NET Webforms 应用程序吗?
如果是这样,ASP.NET Webforms 应用程序就是一种构建 UI 的方法。您需要一个 API,以便您的 Silverlight 应用程序以编程方式使用。为此,您可能需要考虑构建一个 ASP.NET Web 服务,它通过 HTTP 提供 API。
【解决方案4】:
从 Silverlight 应用程序向 Web 服务器发送数据需要什么,对吧?
你可以:
【解决方案5】:
一个简单的方法是让您的 Silverlight 代码通过将信息编码到查询字符串中来创建一个 REST URL,并在服务器上调用一个 .aspx 页面。该页面不需要返回任何标记;它只会处理后端的东西并返回。
或者,您可以从 Silverlight 向您的后端进行 Web 服务调用。
我更喜欢后一种方法。第一次完成的工作要多一些,但它也更通用,从长远来看,通常会产生更好的代码。
虽然从技术上讲您可以使用 JavaScript,但我不建议这样做;如果没有必要,为什么要在技术上倒退?