如果我单击 Silverlight 应用程序的按钮,另一个第三方 Web 应用程序必须获取一些数据。
到目前为止,我的经验是创建可以在需要时调用的 Web 服务功能,但在这种情况下,我必须让客户有可能“处理按钮上的点击事件”。在实际情况下,第三方应用程序是 ASP.Net,但是,如果可能的话,我想做一些可移植的事情。
在开始我想到一些疯狂的想法之前,我会问:你会怎么做?
皮莱吉
如果我单击 Silverlight 应用程序的按钮,另一个第三方 Web 应用程序必须获取一些数据。
到目前为止,我的经验是创建可以在需要时调用的 Web 服务功能,但在这种情况下,我必须让客户有可能“处理按钮上的点击事件”。在实际情况下,第三方应用程序是 ASP.Net,但是,如果可能的话,我想做一些可移植的事情。
在开始我想到一些疯狂的想法之前,我会问:你会怎么做?
皮莱吉
我使用这个类来动态创建和发布表单
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