2

WindowsアプリケーションでLoadControlを実行することは可能ですか?

私はWebとして電子メールを生成していますが、月刊ニュースレターのWindowsサービスに移動したいと思います。

電子メールはUserControlsとして実装されるようになりました。このようにして、htmlユーザーはルックアンドフィールを簡単に変更できます。

現在のレンダリングの実装は次のようになります。

StringBuilder sb = new StringBuilder(4000);
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);

Page page = new Page();

EmailTemplateBase emailCtrl = (EmailTemplateBase)page.LoadControl(
                "Controls/EmailTempaltes/Template.ascx");
// Exception here

emailCtrl.DataContext = dataContext;
emailCtrl.Parameter = parameter;
emailCtrl.RenderMode = renderMode;
emailCtrl.DataBind();
emailCtrl.RenderControl(htw);

subject = emailCtrl.Subject;

string MessageText = sb.ToString().Replace("\t", "").Replace(Environment.NewLine, "");

return MessageText;
4

2 に答える 2

1

私にとっての解決策は、.ascxからHtmlを生成できるWebサービスを呼び出すことでした。

  1. 必要なパラメータをWebサービスに渡します
  2. Webサービスでは、LoadControlよりも新しいページを作成します
  3. すべてのパラメータを設定する
  4. StringBuilderにレンダリングします。

問題のコードを見ることができます。

于 2010-12-11T22:12:15.113 に答える
0

LoadControlasp.netで使用されているメソッドの代わりにControls.Add、親コントロールのメソッドを使用できます。次に、親になるパネルを追加するだけです。

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
于 2010-11-26T21:04:52.850 に答える