如果我點擊我的Silverlight應用程序的按鈕,另一個第三方Web應用程序必須獲取一些數據。當用戶點擊一個按鈕時,從silverlight發送數據到asp.net(或php?)
到目前爲止,我的經驗一直是創建Web服務功能,您可以在需要時調用,但在這種情況下,我必須給客戶「處理按鈕上的點擊事件」的可能性。在實際情況下,第三方應用程序是ASP.Net,但如果可能的話,我想做一些可移植的事情。
在開始之前,我會想到一些瘋狂的想法,我會問:你會怎麼做?
Pileggi
如果我點擊我的Silverlight應用程序的按鈕,另一個第三方Web應用程序必須獲取一些數據。當用戶點擊一個按鈕時,從silverlight發送數據到asp.net(或php?)
到目前爲止,我的經驗一直是創建Web服務功能,您可以在需要時調用,但在這種情況下,我必須給客戶「處理按鈕上的點擊事件」的可能性。在實際情況下,第三方應用程序是ASP.Net,但如果可能的話,我想做一些可移植的事情。
在開始之前,我會想到一些瘋狂的想法,我會問:你會怎麼做?
Pileggi
我使用這個類來創建和發佈表單中動態
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
好的,但是最終客戶如何處理點擊silverlight應用程序? – lamarmora
這是一個很廣泛的問題,可導致非常廣闊答案:您是否非常友善地發佈您到目前爲止獲得的特定代碼,並縮小到您問題的具體細節? –
總的來說,我會建議所有來自第三方網站/服務的電話都來自您的服務器,而不是Silverlight客戶端。 *唯一的例外就是像SEO跟蹤鏈接(您可以在SL客戶端即時生成)* –
@Caspar Kleijne:對於廣泛的answare – lamarmora