0

如果我单击 Silverlight 应用程序的按钮,另一个第三方 Web 应用程序必须获取一些数据。

到目前为止,我的经验是创建可以在需要时调用的 Web 服务功能,但在这种情况下,我必须让客户有可能“处理按钮上的点击事件”。在实际情况下,第三方应用程序是 ASP.Net,但是,如果可能的话,我想做一些可移植的事情。

在开始我想到一些疯狂的想法之前,我会问:你会怎么做?

皮莱吉

4

1 回答 1

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

于 2012-06-29T10:14:31.693 回答