WindowsアプリケーションからのLoadControl
-
28-09-2019 - |
質問
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サービスに電話することでした。
- 必要なパラメーターをWebサービスに渡します
- WebServiceで、LoadControlよりも新しいページを構築します
- すべてのパラメーターを設定します
- StringBuilderにレンダリングします。
問題のコードを見ることができます。
他のヒント
の代わりに LoadControl
ASP.NETで使用される方法で使用できます Controls.Add
親制御の方法。その後、パネルを追加するだけです。
UserControl uc1 = new UserControl //this is your usercontrol
Panel1.Controls.Add(uc1);
所属していません StackOverflow