Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Html.DIsplayFor и наследование / 6 сообщений из 6, страница 1 из 1
23.04.2015, 15:29
    #38943685
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Html.DIsplayFor и наследование
Всем привет! У меня есть базовый класс для фильтрации данных:
Код: 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
23.04.2015, 17:31
    #38943787
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Html.DIsplayFor и наследование
PallarisМожно ли сделать так, чтобы второй фильтр рисовался с использованием тэмплейта базового класса, или мне все-таки придется создавать тэмплейт полностью? Дальше будут фильтры усложняться, выбор смен и т.д., не хотелось бы много кода копировать

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

В целом, MVC умеет подбирать подходящее представлении на основе наследования по его имени. Но темлейт надо писать полностью, так как MVC не может никак угадать того, что именно ты понимаешь под "наследованием темплейтов". Если хочешь гибкости в этом отношении, то лучше воспользоваться хелперами, где можешь реализовать любую логику генерации представления, какую хочешь, с наследованием так, как именно ты себе это представляешь.
...
Рейтинг: 0 / 0
23.04.2015, 18:33
    #38943853
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Html.DIsplayFor и наследование
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
23.04.2015, 18:49
    #38943873
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Html.DIsplayFor и наследование
PallarisНу как, как-нибудь вот так (с <table> видимо не получится, но с элементами друг за дружкой вполне):

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

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

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

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

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


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