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 に答える