2

ユーザー コントロールの HTML を取得する必要があります。

現時点では、以下のコードを使用しています。

// Approach 1
HeaderControl hControl = new HeaderControl();

StringBuilder b = new StringBuilder();
HtmlTextWriter h = new HtmlTextWriter(new StringWriter(b));

hControl.RenderControl(h);
string controlAsString = b.ToString();

// controlAsString  is "" -- Doesn't work

// ----------------------------------------------
// Approach 2
UserControl uc = new UserControl();
HeaderControl hc = (HeaderControl)uc.LoadControl("~/Views/HeaderControl.ascx");

hControl.RenderControl(h);
string controlAsString = b.ToString();

// controlAsString = "<h3>test data</h3>  - Works.

コントロールの仮想パスをハードコーディングする必要がないように、アプローチ1を使用してこれを達成する方法を説明してください。

uc.LoadControl() の他のオーバーロードも試しました

UserControl uc = new UserControl();
HeaderControl hControl = (HeaderControl)uc.LoadControl(typeof(HeaderControl), null);

// Header control has a default constructor that takes no parameters

// but no luck :(
4

1 に答える 1

0

bである必要がありSystem.IO.StringWriterます。アプローチ 1 のコードは次のようになります。

var hControl = new HeaderControl();
var strWriter = new System.IO.StringWriter();
var htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
hControl.Rendercontrol(htmlWriter);
string ControlAsString = strWriter.ToString();

これは、SOの別の回答の助けを借りて私が書いたコードからコピーされたもので、私にとっては完璧に機能します。

于 2013-10-07T18:35:44.943 に答える