2012-06-29 59 views
0

如果我點擊我的Silverlight應用程序的按鈕,另一個第三方Web應用程序必須獲取一些數據。當用戶點擊一個按鈕時,從silverlight發送數據到asp.net(或php?)

到目前爲止,我的經驗一直是創建Web服務功能,您可以在需要時調用,但在這種情況下,我必須給客戶「處理按鈕上的點擊事件」的可能性。在實際情況下,第三方應用程序是ASP.Net,但如果可能的話,我想做一些可移植的事情。

在開始之前,我會想到一些瘋狂的想法,我會問:你會怎麼做?

Pileggi

+0

這是一個很廣泛的問題,可導致非常廣闊答案:您是否非常友善地發佈您到目前爲止獲得的特定代碼,並縮小到您問題的具體細節? –

+0

總的來說,我會建議所有來自第三方網站/服務的電話都來自您的服務器,而不是Silverlight客戶端。 *唯一的例外就是像SEO跟蹤鏈接(您可以在SL客戶端即時生成)* –

+0

@Caspar Kleijne:對於廣泛的answare – lamarmora

回答

1

我使用這個類來創建和發佈表單中動態

public class PassData 
    { 
    public static PassData Default = new PassData(); 

     public void Send(string strUrl, Dictionary<string, object> Parameters, string ContainerClientID = "divContainer") 
     { 
     var obj = HtmlPage.Document.GetElementById(ContainerClientID); 
     if (obj != null) 
     { 
      HtmlElement divContainer = obj as HtmlElement; 
      ClearContent((HtmlElement)divContainer); 

      HtmlElement form = HtmlPage.Document.CreateElement("form"); 
      form.SetAttribute("id", "frmPostData"); 
      form.SetAttribute("name", "frmPostData"); 
      form.SetAttribute("target", "_blank"); 
      form.SetAttribute("method", "POST"); 
      form.SetAttribute("action", strUrl); 

      if (Parameters != null) 
      foreach (KeyValuePair<string, object> item in Parameters) 
       { 
       HtmlElement hidElement = HtmlPage.Document.CreateElement("input"); 
       hidElement.SetAttribute("name", item.Key); 
       hidElement.SetAttribute("value", item.Value.ToString()); 
       form.AppendChild(hidElement); 
       } 

      divContainer.AppendChild(form); 
      form.Invoke("submit"); 

      ClearContent((HtmlElement)divContainer); 
     } 
     } 

     private void ClearContent(System.Windows.Browser.HtmlElement obj) 
     { 
     foreach (HtmlElement item in obj.Children) 
     { 
      obj.RemoveChild(item); 
     } 
     } 


    } 

divContainer是在HTML中的div ID

+0

好的,但是最終客戶如何處理點擊silverlight應用程序? – lamarmora

相關問題