powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Html.DIsplayFor и наследование
6 сообщений из 6, страница 1 из 1
ASP.NET MVC Html.DIsplayFor и наследование
    #38943685
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! У меня есть базовый класс для фильтрации данных:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class SearchDate<T>:SearchBase<T>
    {
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? BeginDate { set; get; }
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? EndDate { set; get; }
    }



С ним связан тэмплейт, в котором такое представление

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<table>
            <thead>
                <tr>
                    <th align="left">Создан</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>C: <p>@Html.EditorFor(x => x.BeginDate)</p>
                        По:<p> @Html.EditorFor(x => x.EndDate)</p>
                    </td>
                </tr>
            </tbody>
        </table>




Далее я хочу создать еще один фильтр:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class SearchDateTime<T>:SearchDate<T>
    {
        public int? Beginhour { set; get; }
        public int? EndHour { set; get; }
        public int? BeginMinute { set; get; }
        public int? EndMinute { set; get; }
    }



Можно ли сделать так, чтобы второй фильтр рисовался с использованием тэмплейта базового класса, или мне все-таки придется создавать тэмплейт полностью? Дальше будут фильтры усложняться, выбор смен и т.д., не хотелось бы много кода копировать
...
Рейтинг: 0 / 0
ASP.NET MVC Html.DIsplayFor и наследование
    #38943787
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisМожно ли сделать так, чтобы второй фильтр рисовался с использованием тэмплейта базового класса, или мне все-таки придется создавать тэмплейт полностью? Дальше будут фильтры усложняться, выбор смен и т.д., не хотелось бы много кода копировать

Нет, нельзя. И не потому что этого не реализовали. Это бессмысленно. Как ты себе это представляешь? Просто добавляются теги? Сверху или снизу? Как?

В целом, MVC умеет подбирать подходящее представлении на основе наследования по его имени. Но темлейт надо писать полностью, так как MVC не может никак угадать того, что именно ты понимаешь под "наследованием темплейтов". Если хочешь гибкости в этом отношении, то лучше воспользоваться хелперами, где можешь реализовать любую логику генерации представления, какую хочешь, с наследованием так, как именно ты себе это представляешь.
...
Рейтинг: 0 / 0
ASP.NET MVC Html.DIsplayFor и наследование
    #38943853
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Это бессмысленно. Как ты себе это представляешь?

Ну как, как-нибудь вот так (с <table> видимо не получится, но с элементами друг за дружкой вполне):
Код: c#
1.
2.
3.
4.
@model DMZPortal.Models.Search.SearchInherited
@Html.EditorFor(x => (SearchBase)x) // рисуем представление для базового класса
@Html.EditorFor(x => x.BeginDate) // рисуем параметры наследника
@Html.EditorFor(x => x.EndDate)
...
Рейтинг: 0 / 0
ASP.NET MVC Html.DIsplayFor и наследование
    #38943873
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisНу как, как-нибудь вот так (с <table> видимо не получится, но с элементами друг за дружкой вполне):

Ну да :) Просто ты сопоставляешь наследование классов наследованию представления, а это разные вещи.

Например, у меня есть базовая модель PropertyViewModel, её наследник DatePropertyViewModel, наследником которого является DateTimePropertyViewModel.

Как это представить в HTML? Базовая модель просто рендерит универсальный текстовый инпут для случая, если нет специализированного шаблона. Для Date рендерится контрол выбора даты, но для DateTime уже рендится другой контрол с выбором даты и времени. Да, технически могут лишь добавлены теги времени, но может это совсем другой контрол, или надо другие атрибуты отрендерить для инпута? Т.е. вариантов масса и понятие наследования здесь никак не укладывается.
...
Рейтинг: 0 / 0
ASP.NET MVC Html.DIsplayFor и наследование
    #38943878
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДа, технически могут лишь добавлены теги времени, но может это совсем другой контрол, или надо другие атрибуты отрендерить для инпута? Т.е. вариантов масса и понятие наследования здесь никак не укладывается.

Не-не, речь не о наследовании представления, а о последовательной отрисовке модели с учетом наследования. Т.е. представление наследника не влияет на представление базового класса. Модель-наследник вызывает отрисовку представлений базового класса и потом отрисовывает кусок своих данных.
...
Рейтинг: 0 / 0
ASP.NET MVC Html.DIsplayFor и наследование
    #38943909
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisНе-не, речь не о наследовании представления, а о последовательной отрисовке модели с учетом наследования. Т.е. представление наследника не влияет на представление базового класса. Модель-наследник вызывает отрисовку представлений базового класса и потом отрисовывает кусок своих данных.

Такое только хелпером.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Html.DIsplayFor и наследование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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