0

データベースに次のような HTML コンテンツがあります。 <div class='content'>This is the test text <cms:control name='test' /></div>

このコンテンツをページにレンダリングする必要がありますが<cms:control name='test' />、関連するユーザー コントロールに置き換えます。

コントロールを文字列に解析できません。これは、ajax コントロール、バリデータなどと複雑になる可能性があるためです。

それを行う最善の方法は何ですか?

4

2 に答える 2

0

ユーザーコントロールをロードできます:

<div id="loadedControls" runat="server">
</div>

ページ読み込み中:

loadedControls.LoadControl("UserControllAddress");
于 2013-10-28T16:05:28.180 に答える
0

この方法で行う必要がある場合は、HTML アジリティ パックを使用して、ページビハインドでユーザー コントロールを解析およびレンダリングすることをお勧めします。

みたいなの...

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlFromDB);
var query = doc.DocumentNode.Decendants("cm:control");
foreach(var node in query)
{
   string userControlHTML = GetHTML(new MyUserControl());
   var newNode = HtmlNode.CreateNode(userControlHTML);
   node.ParentNode.ReplaceChild(newNode, node);
}
//render doc.DocumentNode.OuterHtml in literal control on your page
...

static public string GetHTML(Control myControl)
{
    System.IO.StringWriter sw = new System.IO.StringWriter();
    HtmlTextWriter myWriter = new HtmlTextWriter(sw);
    myControl.RenderControl(myWriter);
    return sw.ToString();
}

コントロールが複雑すぎてこの方法を実行できない場合は、おそらく設計を再検討する必要があります。

于 2013-03-27T16:44:41.633 に答える