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

Можно ли как-то применить принципы полиморфизма, для создания разметки страницы ?

Например если имеется несколько типов объектов и их нужно вывести по разному (ну пусть, к примеру, разным цветом рамки или еще что-то).
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952532
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekПривет.

Можно ли как-то применить принципы полиморфизма, для создания разметки страницы ?

Например если имеется несколько типов объектов и их нужно вывести по разному (ну пусть, к примеру, разным цветом рамки или еще что-то).

С точки зрения Razor нельзя, так как шаблонизатор абсолютно без малейшего понятия того, что вы там себе понимаете под "полиформизмом" разметки.

Но можно "полиформизм" организовать с помощью хелперов, т.е. генерацией HTML-я кодом.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekПривет.

Можно ли как-то применить принципы полиморфизма, для создания разметки страницы ?

Например если имеется несколько типов объектов и их нужно вывести по разному (ну пусть, к примеру, разным цветом рамки или еще что-то).Назначить class элементу в зависимости от типа. Составить соответствующий CSS.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952574
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гуглинг подсказал, что можно реализовать некое подобие через частичные представления и генерацию разметки HTML в коде через Raw.
По идее работать будет, но что-то кажется намудрено. И читать потом наверное сложнее.

Это нормальная идея или не очень ?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952585
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы реализовали, написав свой движок на базе StringTemplate. Но нам это нужно для того, чтобы пользователи могли создавать своих "наследников" и переопределять, соответственно, нашу разметку.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952614
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekгуглинг подсказал, что можно реализовать некое подобие через частичные представления и генерацию разметки HTML в коде через Raw.
По идее работать будет, но что-то кажется намудрено. И читать потом наверное сложнее.

Это нормальная идея или не очень ?

Я думаю, что плохая. Лучше написать свой хелпер (генерация HTML-разметки кодом).
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952620
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМы реализовали, написав свой движок на базе StringTemplate. Но нам это нужно для того, чтобы пользователи могли создавать своих "наследников" и переопределять, соответственно, нашу разметку.

Про что я и говорю, конкретно вам понятен принцип реализации наследования и полиформизма именно в вашей разметке, следовательно вы написали свой движок под это дело.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952642
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМы реализовали, написав свой движок на базе StringTemplate. Но нам это нужно для того, чтобы пользователи могли создавать своих "наследников" и переопределять, соответственно, нашу разметку.

Про что я и говорю, конкретно вам понятен принцип реализации наследования и полиформизма именно в вашей разметке, следовательно вы написали свой движок под это дело.Да принцип-то простой: в этой теме логин-бокс должен выглядеть так, в этой - сяк. А тут пользователь хочет по своему.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952675
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа принцип-то простой: в этой теме логин-бокс должен выглядеть так, в этой - сяк. А тут пользователь хочет по своему.

Я говорю про принцип наследования, а не про переопределение разметки.

Например:

class BaseText --> <p>@Model.Text</p>

class TextWithImage --> ??? до, после или вместо, чего куда пихать? ))
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952689
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAДа принцип-то простой: в этой теме логин-бокс должен выглядеть так, в этой - сяк. А тут пользователь хочет по своему.

Я говорю про принцип наследования, а не про переопределение разметки.А извини, забыл написать, что если не переопределять ничего в компоненте, то он будет выглядеть также, как и в родительской теме.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38952994
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekПривет.

Можно ли как-то применить принципы полиморфизма, для создания разметки страницы ?

Например если имеется несколько типов объектов и их нужно вывести по разному (ну пусть, к примеру, разным цветом рамки или еще что-то).
А что вообще понимается под полиморфизмом и еще принципами?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953019
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

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

В моем примере, у меня во вьюхе нужно рисовать 2 почти одинаковых элементов, отличающихся лишь одним свойством. Причем не значением свойства, а именно типом. Во вьюху передается модель базового класса, от которого и порождены эти 2 класса.
Соответственно не хочется, чтобы вьюшка пестрила case'ами, храня логику отрисовки разных типов элементов.
Может быть тут и частичное представление поможет, не могу пока сообразить.

В ASp.Net Mvc я пока еще нуб. Многое мне еще не ведомо, могу сильно ошибаться в предположениях.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953070
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek, покажите конкретный код: что за базовый класс, что за модель?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953116
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
Это наследование + полиморфизм подтипов.
MVC не вписывается в ООП, в данном случае лучше webforms.
Razor - можно считать как некоторый декларативный язык разметки.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953137
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВMVC не вписывается в ООП, в данном случае лучше webforms.

Это как вообще понимать? И с какого перепугу "тут" лучше вебформс?

ЕвгенийВRazor - можно считать как некоторый декларативный язык разметки.

Чиво? Razor это никакой не язык разметки. Разметкой является HTML, а Razor это движок представлений.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953149
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВMVC не вписывается в ООП, в данном случае лучше webforms.
Razor - можно считать как некоторый декларативный язык разметки.

Бредовее идеи еще не слышал в этом месяце! Спасибо, улыбнуло!
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953158
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Это как вообще понимать? И с какого перепугу "тут" лучше вебформс?
view, как он есть в asp.net mvc не класс, не объект, не функция и не процедура.
В вебформс же, можно сделать 2 наследника некого базового класса и они будут вести себя как хочет ТС.

hVostt
Чиво? Razor это никакой не язык разметки. Разметкой является HTML, а Razor это движок представлений.
Это полу декларативная балалайка, которая может только то что может, не может быть расширена или изменена простым способом.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953159
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calabonga
Бредовее идеи еще не слышал в этом месяце! Спасибо, улыбнуло!
Поделись улыбкою своей со здешними обывателями, не таи в себе.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953163
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВview, как он есть в asp.net mvc не класс, не объект, не функция и не процедура.

Букварь открой для начала. View в ASP.NET MVC это класс, реализующий интерфейс IView.

ЕвгенийВЭто полу декларативная балалайка, которая может только то что может, не может быть расширена или изменена простым способом.

Несёшь какой-то бессвязный бред, какая ещё балалайка? В Razor после символа @ идёт чистый код на C#, я видал системы, где в Razor была написана практически вся логика приложения, включая работу с БД. Это конечно ахтунг, но сути не меняет.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953166
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Более того, в Razor можно написать вот так: @Html.DisplayForModel() или @Html.DisplayFor(p => p.MyModel)

и в зависимости от типа модели Razor найдёт наиболее подходящий шаблон, поддержка наследования модели поддерживается.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953167
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример собственной вьюхи на основе шаблонов XSLT:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class XsltView : IView
{
    private readonly string _path;

    public XsltView(string path)
    {
        _path = path;
    }

    public void Render(ViewContext viewContext, TextWriter writer)
    {
        var xsltFile = viewContext.HttpContext.Server.MapPath(_path);
        var xmlData = viewContext.ViewData["data"] != null 
            ? ((XElement)viewContext.ViewData["data"]).ToString() 
            : "";

        var xmlTree = XDocument.Parse(xmlData);
        var xslt = new XslCompiledTransform();

        xslt.Load(xsltFile);
        xslt.Transform(xmlTree.CreateReader(), null, writer);
    }
}



Razor-ом тут даже не пахнет, ASP.NET MVC пофигу совершенно что там внутрях. Можно даже StringTemplate какой-нибудь заюзать (но нафиг надо)).
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953263
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМожно даже StringTemplate какой-нибудь заюзать (но нафиг надо)).Скучаешь что-ли без меня? :)
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953301
ProBiotekЕвгенийВ,
...
В ASp.Net Mvc я пока еще нуб . Многое мне еще не ведомо, могу сильно ошибаться в предположениях.
Ну тогда попробуй Nancy FX для начала - порог вхождения много ниже, как ступень к MVC будет. С Бритвой дружит. Самое - то для начала, ИМХО.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953350
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttМожно даже StringTemplate какой-нибудь заюзать (но нафиг надо)).Скучаешь что-ли без меня? :)

так есть же Razor )
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953374
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
Скучаешь что-ли без меня? :)

так есть же Razor )это хорошо, но...

если есть возможность использовать более подходящий для наших целей движок представления, то глупо не воспользоваться этой возможностью :)
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953644
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttБукварь открой для начала. View в ASP.NET MVC это класс, реализующий интерфейс IView.
Хорошо, какие есть наследники у IView? System.Web.Mvc.RazorView и System.Web.Mvc.WebFormView, первый отвечает за CSHTML, второй за ASPX. Тут есть ссылки на альтернативы.
Действительно, ты сможешь реализовать наследника IView (кстати ссылка на оригинал запощено тобой кода), но там тебе придется реализовывать вывод всех HTML тегов, которые ты жаждешь получить, что очень непроизводительно и чревато ошибками.
Дабы избавить слабого человека от этого, сделали в частности Razor. Последний - такая штука, которому скармливаешь вообще говоря текстовый файл и объект некоторого класса, и который на выходе дает в общем случае HTML, который и отправляется браузеру. Этот текстовый файл - просто текстовый файл, он не может иметь предков и потомков и к ООП не имеет никакого отношения . Причем этот механизм не обеспечивает никакой валидации во время разработки, например ты можешь не закрыть тег table или двум элементам назначить одинаковый id, Razor это схавает и отработает, так же как и браузеры, ибо они заточены обходить такие ляпы.

В ASP.NET MVC нет никакого колдовства и не надо забивать голову молодым программистам.
К тому же все это чудо интенсивно юзает рефлекшен и DLR , сгиная перфоманс.

hVostt
Несёшь какой-то бессвязный бред, какая ещё балалайка? В Razor после символа @ идёт чистый код на C#, я видал системы, где в Razor была написана практически вся логика приложения, включая работу с БД. Это конечно ахтунг, но сути не меняет.

За что боролись, на то и напоролись. Хотели ведь вынести все лишнее из *.aspx.cs))))
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953790
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAProBiotek, покажите конкретный код: что за базовый класс, что за модель?

Вот тут
Как делать кастинг модели во вьюхе ?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЭтот текстовый файл - просто текстовый файл, он не может иметь предков и потомков и к ООП не имеет никакого отношения .

Ещё раз повторяю, если не дошло с первого раза. В ASP.NET MVC вьюхой является класс, реализующий интерфейс IView. Если тебе надо реализовать какое-то кастомное поведение, создавай вью с нуля или наследуйся от существующей реализации. Во вью передаётся модель, как ты будешь с ней работать -- никого не колышет. Можешь хоть искусственный интеллект там замонстрячить.

Так что не неси чепухи. Razor это движок представлений ещё раз тебе говорю. Если у тебя претензии к тому, что типа представления не являются каким-то ООП, тогда начни сначала с претензий к HTML, который тоже никакого отношения к ООП не имеет.

У тя в голове сплошнейшая каша. Посмотри, а в кастрюле есть ООП? А под диваном? Хорошо искал?


ЕвгенийВВ ASP.NET MVC нет никакого колдовства и не надо забивать голову молодым программистам.
К тому же все это чудо интенсивно юзает рефлекшен и DLR , сгиная перфоманс.

Опять херню несёшь. Чё за бред про DLR и перфоманс? Ты чего там употребляешь? Не кури больше веники.

ЕвгенийВЗа что боролись, на то и напоролись. Хотели ведь вынести все лишнее из *.aspx.cs))))

При чём тут "лишнее"? Это совершенно другой архитектурный принцип . Если ты у самолёта отпилишь крылья, он не станет автомобилем, по твоей аналогии с "избавлением от aspx.cs". Крепкая по ходу трава? )))))
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953900
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЭтот текстовый файл - просто текстовый файл

Позволю себе сделать для тебя ещё одно открытие: Razor-шаблоны компилируются, это по сути такой же текстовый файл, как файл *.cs

Чудеса, правда? Ты либо читаешь букварь, а потом с советами лезешь, либо не суёшься пока сам не допетришь.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953910
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВно там тебе придется реализовывать вывод всех HTML тегов, которые ты жаждешь получитьчаго? накуа?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38953913
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekskyANAProBiotek, покажите конкретный код: что за базовый класс, что за модель?

Вот тут
Как делать кастинг модели во вьюхе ? что вот там? текст какой-то... где код?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954057
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Я тебе привел 2 стандартных реализации + 4 сторонних IViev + 1 скомужженная тобой со стакоферфлоф.
Приведи хотя бы еще пару?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954058
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВно там тебе придется реализовывать вывод всех HTML тегов, которые ты жаждешь получитьчаго? накуа?
А как иначе?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954063
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAпропущено...
чаго? накуа?
А как иначе?давай для начала разберемся, что значит "реализовывать вывод всех HTML тегов", как ты себе это представляешь? Надеюсь не как WebControls в формах?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954066
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAдавай для начала разберемся, что значит "реализовывать вывод всех HTML тегов", как ты себе это представляешь? Надеюсь не как WebControls в формах?
Реализовать Render и записать в System.IO.TextWriter передаваемый вторым параметром, всю ту мутатень, которая потребуется.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954070
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAдавай для начала разберемся, что значит "реализовывать вывод всех HTML тегов", как ты себе это представляешь? Надеюсь не как WebControls в формах?
Реализовать Render и записать в System.IO.TextWriter передаваемый вторым параметром, всю ту мутатень, которая потребуется.ну и что будет делать твоя реализация, если в представлении нет ничего кроме голого HTML?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954082
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Я ничего не собираюсь реализовывать, голый html можно отдать как статический файл.
ТС хотел сделать базовый класс и два наследника, Razor этого не позволяет.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954089
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANA,
Я ничего не собираюсь реализовывать, голый html можно отдать как статический файл.нууу, так не интересно.. вот есть у тебя какой-то свой View Engine, понимающий .yourhtml файлы.
Ты будешь писать для каждого HTML тега в файле какую-то реализацию?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954099
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
А ты пишешь в том же aspx свою реализацию для каждого тега?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954152
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVostt,
Я тебе привел 2 стандартных реализации + 4 сторонних IViev + 1 скомужженная тобой со стакоферфлоф.
Приведи хотя бы еще пару?

Ты чего такой трудный-то? Любой Razor-файл компилируется в класс! Более того, ты в самом Razor-файле можешь указать базовый класс с помощью инструкции @inherits. Какие ещё тебе примеры нужны? Вьюха это класс. Повторить может быть для полного усвоения??
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954153
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВТС хотел сделать базовый класс и два наследника, Razor этого не позволяет.

Позволяет, но реализацию "наследования" тебе придётся самому сделать, так как разор не в теме, что ты понимаешь под "наследованием", что нужно делать? Добавлять атрибуты в теги? Добавлять теги? Где? Сверху? Снизу? Внутри? Если внутри, то где? Всё тоже самое нужно будет решать в любом движке, даже в aspx, не имеет значения с помощью чего ты рендеришь. Или приводи реальный пример наследования на aspx в вебформ. Удиви нас!
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954224
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANA,
А ты пишешь в том же aspx свою реализацию для каждого тега?Еврей какой-то :)

Что ты имел ввиду под "тебе придется реализовывать вывод всех HTML тегов, которые ты жаждешь получить, что очень непроизводительно и чревато ошибками"?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954617
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВhVostt,
Я тебе привел 2 стандартных реализации + 4 сторонних IViev + 1 скомужженная тобой со стакоферфлоф.
Приведи хотя бы еще пару?

Ты чего такой трудный-то? Любой Razor-файл компилируется в класс!
Это новый виток развития! Почитай на досуге что такое компиляция.
hVostt Более того, ты в самом Razor-файле можешь указать базовый класс с помощью инструкции @inherits. Какие ещё тебе примеры нужны?
По умолчанию это System.Web.Mvc.WebViewPage<TModel> или System.Web.Mvc.WebViewPage, можно отнаследоваться от них и передать свой.
Так же была введена директива @model, дабы меньше букв и не путать неокрепшие умы.
Внутри разметки ты можешь пользоваться членами этого класса, а так же получить типизированный доступ к модели. Но хоть запереопределяйся, с помощью него ты сможешь влиять на разметку.

hVostt Вьюха это класс. Повторить может быть для полного усвоения??
Одна из реализаций IView действительно использует Razor генерации HTML, но сам Razor это не класс.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954620
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВТС хотел сделать базовый класс и два наследника, Razor этого не позволяет.

Позволяет, но реализацию "наследования" тебе придётся самому сделать, так как разор не в теме, что ты понимаешь под "наследованием", что нужно делать? Добавлять атрибуты в теги? Добавлять теги? Где? Сверху? Снизу? Внутри? Если внутри, то где? Всё тоже самое нужно будет решать в любом движке, даже в aspx, не имеет значения с помощью чего ты рендеришь. Или приводи реальный пример наследования на aspx в вебформ. Удиви нас!
Вообще в модели компиляции ASP.NET webforms в результате создается класс, наследованный например от например вебформы в котором собрано все что есть в *.aspx и *.aspx.cs
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954622
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВskyANA,
А ты пишешь в том же aspx свою реализацию для каждого тега?Еврей какой-то :)

Что ты имел ввиду под "тебе придется реализовывать вывод всех HTML тегов, которые ты жаждешь получить, что очень непроизводительно и чревато ошибками"?
Я имел ввиду только то что имел.
Если ты делаешь реализацию IView, то должен писать во writer все сам, например с помощью того же T4.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954625
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВОдна из реализаций IView действительно использует Razor генерации HTML, но сам Razor это не класс.

Сам Razor это движок представлений. Всё верно. Движок. Что делает движок? Компилирует Razor-шаблон в класс. Класс это из мира ООП.

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

Ещё как можно. Но ты не можешь, мы это уже поняли.

ЕвгенийВПочитай на досуге что такое компиляция.

Сразу же после того, как ты освоишь азы
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954627
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВообще в модели компиляции ASP.NET webforms в результате создается класс, наследованный например от например вебформы в котором собрано все что есть в *.aspx и *.aspx.cs

Ты покажи ООП в разметке на вебформах, не будь голословом.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954629
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

А хочешь есчо одно великое чудо!? Можно все Razor-шаблоны скомпилировать прям в DLL! Т.е. никаких больше текстовых файлов. Это легко.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954839
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСразу же после того, как ты освоишь азы
миссия невыполнима
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954851
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВ,

А хочешь есчо одно великое чудо!? Можно все Razor-шаблоны скомпилировать прям в DLL! Т.е. никаких больше текстовых файлов. Это легко.
И получить такую мутатень? :)

aspx/ascx тоже можно запихнуть в dll и что?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954908
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttЕвгенийВ,

А хочешь есчо одно великое чудо!? Можно все Razor-шаблоны скомпилировать прям в DLL! Т.е. никаких больше текстовых файлов. Это легко.
И получить такую мутатень? :)

aspx/ascx тоже можно запихнуть в dll и что?
Медицина бессильна
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954924
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМедицина бессильна
Или по делу говори или вообще не говори.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954925
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВaspx/ascx тоже можно запихнуть в dll и что?

что и что? я тебе уже сколько раз сказал, что Razor-шаблоны компилируются в классы, а это ООП в чистом виде, когда ты говорил, что там ООП не пахнет и нёс какую-то чушь про текстовые файлы. *.cs тоже текстовые файлы если уж на то пошло, там тоже нет ООП?

ну и я просил у тебя реализацию наследования разметки на классическом вебформс. ты тихо съехал с темы. как это понимать? сам же сказал, что дескать на MVC этого нельзя, а на вебформах можно. где демонстрация в доказательство этого утверждения?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954948
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ты покажи ООП в разметке на вебформах, не будь голословом.
В общих чертах.
Код: c#
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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
    public abstract class Изопропил : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }
    }
    public class Хвост : Изопропил
    {
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.WriteBeginTag("div");
            output.Write("Хвост");
            output.WriteEndTag("div");
        }
    }
    public class Апельсин : Изопропил
    {
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.WriteBeginTag("div");
            output.Write("Апельсин");
            output.WriteEndTag("div");
        }
    }
    public class Test : Control
    {
        public Изопропил Изопропил { get; set; }
        protected override void EnsureChildControls()
        {
            if (Изопропил != null)
            {
                Изопропил = new Апельсин();
            }
            Controls.Add(Изопропил);
            base.EnsureChildControls();
        }
    }
}
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954954
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
что и что? я тебе уже сколько раз сказал, что Razor-шаблоны компилируются в классы, а это ООП в чистом виде, ?
Покажи хоть один класс в чистом виде на любом языке только не в разметке Razor.
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954960
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПокажи хоть один класс в чистом виде на любом языке только не в разметке Razor.

что сказать хотел?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954964
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЕвгенийВПокажи хоть один класс в чистом виде на любом языке только не в разметке Razor.

что сказать хотел?
Попрошу предоставить код на любом языке программирования вплоть до MSIL, в который компилируется Razor.
Хотя бы этого.
Код: html
1.
2.
3.
4.
5.
6.
7.
@{
    ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

<p>Use this area to provide additional information.</p>
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38954979
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПопрошу предоставить код на любом языке программирования вплоть до MSIL, в который компилируется Razor.
Хотя бы этого.
Пожалуйста -
Код: c#
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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
#pragma checksum "C:\var\Site\WebApplication1\WebApplication1\Views\Home\Index.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "7E7BD28C41F854AF101A00DD14B2B82196E9ECA5"
//------------------------------------------------------------------------------
// <auto-generated>
//     Этот код создан программой.
//     Исполняемая версия:4.0.30319.34209
//
//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
//     повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ASP {
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.Helpers;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.WebPages;
    using System.Web.Mvc;
    using System.Web.Mvc.Ajax;
    using System.Web.Mvc.Html;
    using System.Web.Optimization;
    using System.Web.Routing;
    using WebApplication1;
    
    
    public class _Page_Views_Home_Index_cshtml : System.Web.Mvc.WebViewPage<dynamic> {
        
#line hidden
        
        public _Page_Views_Home_Index_cshtml() {
        }
        
        protected ASP.global_asax ApplicationInstance {
            get {
                return ((ASP.global_asax)(Context.ApplicationInstance));
            }
        }
        
        public override void Execute() {
            
            #line 1 "C:\var\Site\WebApplication1\WebApplication1\Views\Home\Index.cshtml"
  
    ViewBag.Title = "About";

            
            #line default
            #line hidden
BeginContext("~/Views/Home/Index.cshtml", 35, 6, true);

WriteLiteral("\r\n<h2>");

EndContext("~/Views/Home/Index.cshtml", 35, 6, true);

BeginContext("~/Views/Home/Index.cshtml", 42, 13, false);

            
            #line 4 "C:\var\Site\WebApplication1\WebApplication1\Views\Home\Index.cshtml"
Write(ViewBag.Title);

            
            #line default
            #line hidden
EndContext("~/Views/Home/Index.cshtml", 42, 13, false);

BeginContext("~/Views/Home/Index.cshtml", 55, 12, true);

WriteLiteral(".</h2>\r\n<h3>");

EndContext("~/Views/Home/Index.cshtml", 55, 12, true);

BeginContext("~/Views/Home/Index.cshtml", 68, 15, false);

            
            #line 5 "C:\var\Site\WebApplication1\WebApplication1\Views\Home\Index.cshtml"
Write(ViewBag.Message);

            
            #line default
            #line hidden
EndContext("~/Views/Home/Index.cshtml", 68, 15, false);

BeginContext("~/Views/Home/Index.cshtml", 83, 64, true);

WriteLiteral("</h3>\r\n\r\n<p>Use this area to provide additional information.</p>");

EndContext("~/Views/Home/Index.cshtml", 83, 64, true);

        }
    }
}

...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38955015
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВ общих чертах.

А где наследование-то на уровне контрола? У тебя один контрол, а потом ты какой-то текст через задницу дописываешь. Где полноценное наследование разметки? Именно в шаблоне???

Вот вариант для MVC, чистый, без всякой херни, всё доступно в Razor-разметке, без анальной проходимости:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class TextBoxModel
{
   public string Text { get; set; }
}

public class TextBoxWithImageModel : TextBoxModel
{
    public string ImageUrl { get; set; }
}

public class TextBoxWithImageButtonModel : TextBoxWithImageModel
{
    public string ButtonText { get; set; }
}



Шаблоны:

TextBoxModel.cshtml

Код: html
1.
2.
@model TextBoxModel
@Html.TextBoxFor(p => p.Text)



TextBoxWithImageModel.cshtml

Код: html
1.
2.
3.
@model TextBoxWithImageModel
@Html.TextBoxFor(p => p.Text)
<img src="@Model.ImageUrl" />



TextBoxWithImageButtonModel.cshtml

Код: html
1.
2.
3.
@model TextBoxWithImageButtonModel
@Html.TextBoxFor(p => p.Text)
<button style="background: url(@Model.ImageUrl)">@Model.ButtonText</button>



а теперь, волшебство!

Код: c#
1.
2.
3.
4.
5.
6.
7.
TextBoxModel model1 = new TextBoxModel();
TextBoxModel model2 = new TextBoxWithImageModel();
TextBoxModel model3 = new TextBoxWithImageButtonModel();

@Html.DisplayFor(x => model1)
@Html.DisplayFor(x => model2)
@Html.DisplayFor(x => model3)



И выведутся соответствующие шаблоны, прикинь?

А ты какую-то вафлю изобразил, до сих пор жду наследование в разметке, а не фигню. Ты ещё фильтр создай, чтобы модифицировать содержимое респонза
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38955021
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПожалуйста -

Ну ты шаман! Где взял?
...
Рейтинг: 0 / 0
Полиморфизм в разметке ?
    #38955027
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВИзопропилПожалуйста -

Ну ты шаман! Где взял?
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\...
с вариациями
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Полиморфизм в разметке ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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