powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическое управление html-разметкой
26 сообщений из 26, показаны все 2 страниц
Динамическое управление html-разметкой
    #38988500
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем вечер.

Подскажите, пожалуйста, в какой самый простой способ динамически управлять отображаемым контентом html средствами c#.

Суть дела в следующем.

В зависимости от пользовательских настроек, сервер должен отдавать тот, или иной вариант html кода. Причем, варианты html между собой мало чем похожи и, фактически, каждый вариант этого html индивидуальный и неповторимый. Это не та ситуация, где большая часть html-разметки стандартная и в местах присутствуют вкрапления серверного кода <% (ну или непосредственно из c#-фала через runat="server"). Тут суть в том, что 90% html-разметки уникальна для каждого конкретного случая.

В то же время, остается необходимость в ту, или иную (подгружаемую) html-разметку внедрять результаты серверных вычислений.

Так вот вопрос, как это проще реализовать.
На ум пришли варианты:
1. Каждому варианту html-разметки создать отдельный пользовательский элемент управления и на странице, в зависимости от настроек, динамически подключать тот, или иной пользовательский элемент и дальше при выполнении страницы работать уже с его свойствами и переменными. В такой способ жестко прописывается html-разметка в пользовательском элементе управления;
2. Сохранить в базе данных все варианты html-разметки. В зависимости от настроек, подтягивать из базы ту, или иную html-разметку, дальше парсить её средствами c# на предмет поиска (заранее внедренных в неё условных меток) и на местах этих меток программно вставлять/заменять вычислимыми данными.
3. Средствами CSS, но тут мне кажется, вообще утопическая идея.

Подскажите, какой способ приемлемый, и возможно, есть более простой иной способ.

Спасибо.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988502
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolik,
Я бы посоветовал первый вариант. Проще в плане разработки и поддержки. И при этом сохраняется чистота кода и модульность.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988506
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, подключение к базе отсутствует лишнее.

Но может кто подкинет и другие варианты, возможно кто-то на практике подобное реализовал?!
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988508
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На практике так и реализовывал как ответил выше.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988510
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron, спасибо!

Может поделитесь какие трудности возникали, так сказать особенности подхода?!
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988515
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolik,
Трудностей с юзер контролами особых не возникало. Ну только важно понять Page life cycle в рамках одной формы и юзер контрола, и тогда все будет просто :)
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988516
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так?

Код: c#
1.
2.
3.
4.
5.
private void Page_Load(object sender, EventArgs e) 
{
      Control con = LoadControl("~/Addin/Control1.ascx");
      this.parent.Controls.Add(con); // parent - это родительский контейнер (Panel, PlaceHolder и т.п.).
}
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988519
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше просто делать их невидимыми на форме, а на Page_Load проверять права пользователя и ставить флаг видимость в true. Динамическая загрузка добавляет проблем и головной боли.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988523
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага!

А по скорости отработки, если в ПейджЛоад страницы я определяю какому конролу енейбл указать тру (остальные по умолчанию в енейбл фолс), то насколько я понимаю, процесс инициализации фолсовых контролов не заденет?! Верно? То-есть тот факт, что в разметке они накиданы и зарегистрированы в заголовке страницы (имею в виду серверную часть части разметки), то они ресурсы зря на себя не потянут. Так?
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988542
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolik,
Не потянут, они просто не зарендерятся и их обьект будет равен null насколько помню.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988546
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушай, помоги, пожалуйста, еще советом, если есть время конечно.

Нагенерил я достаточно юзерконтролов. Но для большей гибкости мне необходимо иметь открытые свойства и методы в каждом юзерконтроле, что бы вытягивать из них некоторые данные на родительскую страницу, содержащую этот юзерконтрол (многое происходит внутри контрола, но некоторое требуется вытягивать через открытые свойства и методы).

Так вот, что бы полиморфно работать с элементом юзерконрола и не зависеть от варианта подключения того, или иного, попытался создать базовый клас для юзерконтрола и унаследовать все от него. Но тут меня ждало разочарование. Также попробовал создать переменную типа юзерконтрола и присвоить ей объект целевого конкретного юзерконтрола, но на его уровне не видны пользовательские свойства контрола (естественно!).

Как обойти это обстоятельство?
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988552
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит попробовать унаследоваться от пользовательского интерфейса?
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988553
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolikПодскажите, какой способ приемлемый, и возможно, есть более простой иной способ.

Не понял ничего на самом деле, задача поставлена не с того конца вообще.

Озвученное решается практически на любой серверной технологии, способной хоть как-то худо-бедно отвечать на HTTP-запросы.

Универсальный вариант, возьми бесплатную CMS и не парься. Там можно миллионы уникальных HTML страниц хранить и отдавать.

Зацени: мне нужно построить. В зависимости от того, что захочет клиент, надо делать полы, стены, где-то полотки, а где-то нет. Всё индивидуально, это не так, что типа раз комната, два комната, туалет-ванная... Нееееет. Тут хер пойми чо, там неведомая херня, здесь пьяный бомж не разберёт. Ну вы понимаете..

ПОсоветуйте, что делать? Может молотки применять? А пилы нужны? Хотя нет, пилы это утопическая идея. Или может ламинат? Чё там ещё есть? Бетон? Ну давайте, ребятки, накидывайте идеи.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988559
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolik,
От пользовательского интерфейса наследоваться все же не стОит :) а вот посадить пользовательские контролы на интерфейс - вполне должно сработать. Только свойства считывать оттуда можно будет на Render или PreRender главной формы насколько я помню
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988563
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Ты разбуянился. А мы только с работы, трезвые :(
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988567
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVostt,
Ты разбуянился. А мы только с работы, трезвые :(


Вы просто жестите ))) И не трогайте вебформс. Не шевелите труп. И не надо обольщаться тем, что МС его типа поддерживает.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988577
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Еще куча контор осталась, которые пользуют Формс. Как ни крути...
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988580
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы правы с одной стороны, но дял того я и спросил кто сталкивался, а не требую, мол давайте мне тут все разъясняйте что и как.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988586
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolikВы правы с одной стороны, но дял того я и спросил кто сталкивался, а не требую, мол давайте мне тут все разъясняйте что и как.

До сих пор непонятно, какую проблему ты пытаешься решить. Было бы проще, если бы ты сказал что конкретно нужно, поближе к предметной области.

Но универсальный совет я дал, он до сих пор актуален.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988587
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVostt,
Еще куча контор осталась, которые пользуют Формс. Как ни крути...

Да чёто давным-давно уже с такими не сталкивался. Может где-то на задворках, или в подвалах.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988592
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
А когда последний раз работу менял?
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988594
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVostt,
А когда последний раз работу менял?

Не так давно
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988609
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, конкретно примерчик накидал:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/Controls/UserTemplate_1.ascx" TagPrefix="UserTemplate" TagName="Tag1" %>
<%@ Register Src="~/Controls/UserTemplate_2.ascx" TagPrefix="UserTemplate" TagName="Tag2" %>

<head runat="server">
    <title></title>
    <link href="Styles/File2.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        
        <asp:RadioButtonList ID="Shablon" runat="server">
            <asp:ListItem>1</asp:ListItem>
            <asp:ListItem>2</asp:ListItem>
        </asp:RadioButtonList>
        

        

        
        <asp:Button ID="Button1" runat="server" Text="Прицепить файл CSS" 
            onclick="Button1_Click" />
    
        <h1>Это H1</h1>

        <UserTemplate:Tag1 ID="UT1" runat="server" Visible="false" EnableViewState="false" />
        <UserTemplate:Tag2 ID="UT2" runat="server" Visible="false" EnableViewState="false" />
    </div>
    </form>
</body>
</html>



И бэккод:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
protected void Button1_Click(object sender, EventArgs e)
    {     
        UserControl uc;
        string val = this.Shablon.SelectedValue;
        if (val == "1")
        {
            uc = this.UT1;
        }
        else if (val == "2")
        {
            uc = this.UT1;
        }

        uc.Visible = true; //что-то типа этого бы реализовать
        string cssFileName = uc.UserPublicProperties_CssFileName;

        //здесь уже подключаем этот файл css к данной странице (ведь css должен быть подключен в хедере разметке, а не в разметке пользовательского контрола).
    }



Вот хочется загнать любой пользовательский контрол (экземпляр) в переменную и уже работать с переменной независимо от того, какой юзерконтрол попадет в переменную.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988610
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
protected void Button1_Click(object sender, EventArgs e)
    {     
        UserControl uc;
        string val = this.Shablon.SelectedValue;
        if (val == "1")
        {
            uc = this.UT1;
        }
        else if (val == "2")
        {
            uc = this.UT2;
        }

        uc.Visible = true; //что-то типа этого бы реализовать
        string cssFileName = uc.UserPublicProperties_CssFileName;

        //здесь уже подключаем этот файл css к данной странице (ведь css должен быть подключен в хедере разметке, а не в разметке пользовательского контрола).
    }
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988613
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avolik,
Вроде все верно. Только посадите все контролы на один интерфейс и должно получиться.
...
Рейтинг: 0 / 0
Динамическое управление html-разметкой
    #38988620
avolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только-только получилось с интерфейсами.

Спасибо всем!

Двигаемся дальше!
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическое управление html-разметкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]