2009-11-26 64 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網頁,因爲它區分大小寫使用。