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

У меня есть класс модели, у которого имеется свойство items. В items хранится IEnumerable<MyBaseClass>.
От MyBaseClass порождено 2 класса наследника, и они то и хранятся в Items.

В во вьюхе, мне нужно пройтись по массиву items и отобразить в таблицу интформацию. В таблице есть столбцы для всех свойств обеих классов (которые хранятся в items, которые порождены от MyBaseClass).

1. Как делать кастинг элемента item проходя по items ? Какой синтаксис ?
2. Наверное не верно во вьюху выносить такую логику ?
Вьюха же должна лишь отрисовывать модель, без какой-то логики. остается вопрос - является ли кастинг логикой ? По моему это не выходит за рамки вьюхи.
3. Как можно сделать лучше ? Были мысли как-то использовать partialView с наследованием, возложив на них обязанность отрисовки специфических. Также была мысль разделить на 2 вьюхи, каждая из которых отвечает за свой тип модели - однако мне то нужно чтобы был ОДИН список, одна вьюха.


Меня интересует ответ на первый вопрос. Второй и третий чисто для развития и понимания.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953797
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну обычно такое делают через displaytemplate, почитайте, может то что нужно вам
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953806
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, логика форматирования во вьюхе вполне допустима и не будет считаться бизнес-логикой. Я лично не стремлюсь преобразовать все исключительно в string, List<string> и bool при передаче туда.

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

ProBiotek1. Как делать кастинг элемента item проходя по items ? Какой синтаксис ?нее очень понятно, в чем вопрос. as, is, () - все традиционно
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953807
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Спасибо почитаю.
Но пока, пожалуй, все же сделаю через кастинг. Так проще и быстрее сейчас.
На досуге почитаю и перепишу.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953816
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Можете пример привести,у меня что то не получается.

Код: c#
1.
2.
3.
4.
5.
6.
7.
                            <td>
                            @{
                                if (item is Child1Class)
                                    (item as Child1Class).Places.Count();
                                else 0;
                            }                                                                        
                        </td>
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953822
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekShocker.Pro,

Можете пример привести,у меня что то не получается.

Код: c#
1.
2.
3.
4.
5.
6.
7.
                            <td>
                            @{
                                if (item is Child1Class)
                                    (item as Child1Class).Places.Count();
                                else 0;
                            }                                                                        
                        </td>


Так это не является корректным синтаксисом в C# внутри вьюх. Нет assignment'а.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953829
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

а как надо ?
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953847
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekНа досуге почитаю и перепишу.
смотрите сами, там прочитать и понять ну 5 ну 10 минут принцип. если он вам подойдет то это будет лучший вариант чем это портянка из if
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953849
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
Почитав внимательно, честно скажу, плохое решение выбрано. Лучше во вьюхе уже иметь готовый набор данных для простого парсинга.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953855
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ведь никто не подсказал как надо написать )))

Я потом скорее всего переделаю на displaytemplate. Но сейчас это не самая важная задача - там его гору нужно сделать. Сейчас планирую сделать как попроще, а потом смогу отрефачить.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953859
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekа потом смогу отрефачить.
Как показывает практика потом обычно не наступает.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953863
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Вы определенно уходите от ответа :)
Я знаю что делаю - там так и так нужно рефачить все. Сейчас мне нужен Proof of concept.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953866
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekShocker.Pro,

Можете пример привести,у меня что то не получается.

Код: c#
1.
2.
3.
4.
5.
6.
7.
                            <td>
                            @{
                                if (item is Child1Class)
                                    (item as Child1Class).Places.Count();
                                else 0;
                            }                                                                        
                        </td>


примерно так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
                            <td>
                                @if (item is Child1Class) {
                                    @(item as Child1Class).Places.Count().ToString();
                                {
                                else {
                                    @("0")
                                 }
                        </td>
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953868
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
} вместо { конечно же...
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953870
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
ну может ваши условия вида
if (item is Child1Class)
разместить в контроллере, а он уж выдает partialView для вывода нужного типа ?
это вариант простой , наверное если побольше знать о задаче можно и что-то выгодное придумать
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953880
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь.

monstrU, спасибо, я и подумывал, что тут нужны частичные представления. Но не силен, поэтому делаю как проще.

Сейчас нужно сделать как получится. Это пилотный вариант. Там еще куча других таких же вьюх и контроллеров. Нужно получить хоть что-то, что я вообще смогу рефакторить, поймите это.
Красный зеленый рефачинг. Мне нужен хоть какой то зеленый сейчас. Понимаете ?

Когда есть опыт, конечно вы можете на несколько шагов вперед планировать и делать сразу паршиалы и темплейты. Я не могу пока.
...
Рейтинг: 0 / 0
Как делать кастинг модели во вьюхе ?
    #38953929
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: c#
1.
 @(item as Child1Class).Places.Count().ToString();

кстати, тут еще нужны дополнительные скобки, а точка с запятой не нужна
Код: c#
1.
 @((item as Child1Class).Places.Count().ToString())

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


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