質問

Windowsアプリケーションにコントロールをロードすることは可能ですか?

私はウェブとして電子メール生成を持っていますが、毎月のニュースレターのために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;
役に立ちましたか?

解決

私にとっての解決策は、.ASCXからHTMLを生成することができたWebサービスに電話することでした。

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

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

他のヒント

の代わりに LoadControl ASP.NETで使用される方法で使用できます Controls.Add 親制御の方法。その後、パネルを追加するだけです。

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top