система шаблонов usercontrol c # - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу использовать замену строки для замены тега {tag:shoppingcart} и чтобы он загружал пользовательский элемент управления:

<%@ Register TagPrefix="basket" TagName="cart" src="~/controls/basket.ascx" %>

<basket:cart id="test" runat="server"></basket:cart>

Я бы определил элементы управления в верхней части страницы, которые нуждаются в них.

У меня вопрос, каков мой лучший способ добиться следующего, если это вообще возможно

string templatehtml;
templatehtml = template[0].Cms;
string newhtml;

newhtml = templatehtml.Replace("{tag_pagecontent}", currentPage[0].Body);

newhtml = templatehtml.Replace("{tag_shoppingcart}",   <basket:cart    id="test" runat="server"></basket:cart>); 

litcontent.Text = newhtml;

Это код <basket:cart, с которым у меня проблемы.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

На самом деле мы делаем очень похожую вещь, за исключением того, что у нас есть div-заполнители на странице.

В методе page_init мы получаем ссылку на заполнитель div, загружаем пользовательский элемент управления на страницу и затем добавляем usercontrol к элементам управления div.

Например (очень грубый код):

// Get a reference to the div
Control oUserControlDiv = this.FindControl("divUserControl");

// Load the user control
Control oControl = this.LoadControl("controls/basket.ascx");
oControl.EnableViewState = true;

// Clear the existing control(s) from the div
oUserControlDiv.Controls.Clear();
// And add the new one
oUserControlDiv.Controls.Add(oControl);
0 голосов
/ 14 декабря 2011

Пожалуйста, попробуйте это вместо:

var basket = new Basket();

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);

using (HtmlTextWriter writer = new HtmlTextWriter(sw))
{
   basket.RenderControl(writer);
}

string basketHtml = sb.ToString();

newhtml =    templatehtml.Replace("{tag_shoppingcart}",   basketHtml);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...