Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC отображение данных на странице / 12 сообщений из 12, страница 1 из 1
07.07.2014, 17:54
    #38689670
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Добрый день

Я новичок в ASP.NET MVC, перешел с ASP.NET Web Forms.

Есть Controllers

Код: 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.
public ActionResult Confirmation(string apt, int iD)
        {
            wexReposittory wex = new wexReposittory();

            if (apt == "PurchaseCall")
            {
                if (iD == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                else
                {
                    return View(wex.GetPurchaseCallById(iD));
                }
            }
            if (apt == "PayQuerry")
            {
                if (iD == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                else
                {
                    return View(wex.GetPayQuerryById(iD));
                }
            }

            return View();
        }



wexReposittory.cs

Код: 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.
public class wexReposittory
    {
        private WDbModel con;

        public wexReposittory()
        {
            con = new WDbModel();
        }

public IEnumerable<vPurchaseCall> GetPurchaseCallById(int iD)
        {
            IEnumerable<vPurchaseCall> getPurchaseCall =
                from x in con.vPurchaseCalls.AsEnumerable()
                where x.PCL_ID == iD
                select x;
            return getPurchaseCall;
        }

public IEnumerable<vPayQuerry> GetPayQuerryById(int iD)
        {
            IEnumerable<vPayQuerry> getPayQuerry =
                 from x in con.vPayQuerries.AsEnumerable()
                 where x.PPQ_ID == iD
                 select x;
            return getPayQuerry;
        }
}



Из этого видно, что у меня две модели.

Confirmation.cshtml

Как мне отобразить их по условию как в контролере?. ( можно конечно 2 страницы сделать и все прекрасно вывести )

если по одному то вот так

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using WEX.Models
@model IEnumerable<vPayQuerry>

@foreach (vPayQuerry pq in Model)
        {
ID: pq.ID
}



И то для одной записи наверно не так все делать, без понятия. (подскажите)

Спасибо, заранее благодарен.
...
Рейтинг: 0 / 0
07.07.2014, 18:11
    #38689689
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
а) Модель в представлении надо привести к общему для обоих вариантов классу (например базовому для них обоих)

б) Активно использовать частичные представления. Базовая модель пусть использует IEnumerable и реализует общий код, а частичные представления уже содержат код под конкретные подтипы IEnumerable<?>
...
Рейтинг: 0 / 0
07.07.2014, 18:18
    #38689700
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Shocker.Proа) Модель в представлении надо привести к общему для обоих вариантов классу (например базовому для них обоих)

а если данные разные в обоих моделях? ( как обойти )

Shocker.Proа)
б) Активно использовать частичные представления. Базовая модель пусть использует IEnumerable и реализует общий код, а частичные представления уже содержат код под конкретные подтипы IEnumerable<?>

Не понял что вы имели введу.
...
Рейтинг: 0 / 0
07.07.2014, 18:48
    #38689722
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
wiktor591Shocker.Proа) Модель в представлении надо привести к общему для обоих вариантов классу (например базовому для них обоих)

а если данные разные в обоих моделях? ( как обойти )Причем тут данные? Если у классов есть общие поля, методы и т.п., а представление имеет общий для обоих классов код, то у этих классов должен быть общий базовый класс, либо общий интерфейс.


wiktor591Shocker.Proб) Активно использовать частичные представления. Базовая модель пусть использует IEnumerable и реализует общий код, а частичные представления уже содержат код под конкретные подтипы IEnumerable<?>

Не понял что вы имели введу.У вас есть представление, которое делает некоторые общие действия для обоих классов и некоторые действия персонально под каждый класс. Действия, заточенные под каждый конкретный класс выносятся в отдельные частичные представления, которые вызывает основное представление @Html.RenderPartial
...
Рейтинг: 0 / 0
07.07.2014, 18:59
    #38689731
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Shocker.Proа)
Причем тут данные? Если у классов есть общие поля, методы и т.п., а представление имеет общий для обоих классов код, то у этих классов должен быть общий базовый класс, либо общий интерфейс.


Слушай у тебя в одной модели тип данных может быть разным. Как ты сделаешь чтоб совместить две модели в одну? ( я тебя не понимаю ) Приведи пример, мне будет яснее.

Shocker.Proа)
У вас есть представление, которое делает некоторые общие действия для обоих классов и некоторые действия персонально под каждый класс. Действия, заточенные под каждый конкретный класс выносятся в отдельные частичные представления, которые вызывает основное представление @Html.RenderPartial


Приведи пример, чтоб я понял тебя.
...
Рейтинг: 0 / 0
07.07.2014, 19:02
    #38689734
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Тогда для начала ответь на вопрос, почему ты пытаешься для двух СОВЕРШЕННО РАЗНЫХ (по твои словам) моделей сделать ОДНО представление, а не разные?
...
Рейтинг: 0 / 0
07.07.2014, 19:11
    #38689745
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Если брать твой пример, где печатаются ID-шники из списка, то

1) делаешь интерфейс, представляющий одно поле int ID - IMyInterface

2) реализуешь этот интерфейс на своих классах vPayQuerry : IMyInterface, vPurchaseCall : IMyInterface

3) модель для представления:
Код: c#
1.
2.
3.
4.
5.
6.
@model IEnumerable<IMyInterface>

@foreach (IMyInterface pq in Model)
        {
ID: pq.ID
}
...
Рейтинг: 0 / 0
07.07.2014, 20:22
    #38689781
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
BTW - бессмысленный кусок кода (дважды):
Код: c#
1.
2.
3.
4.
5.
                if (iD == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                else

так как iD объявлен как int
...
Рейтинг: 0 / 0
08.07.2014, 10:44
    #38690120
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Shocker.ProТогда для начала ответь на вопрос, почему ты пытаешься для двух СОВЕРШЕННО РАЗНЫХ (по твои словам) моделей сделать ОДНО представление, а не разные?

У меня был реализован этот проект в ASP.NET Web Forms и я использовал одну страницу для вывода информации по разным данным.

Вот и спросит по MVC, можно ли сделать так. ( про две модели )

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

Спасибо.
...
Рейтинг: 0 / 0
08.07.2014, 11:24
    #38690170
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Я не спрашивал про историю свадьбы бабушки.

Какая объективная необходимость делать одно представление на разные модели? Общий код? Если нет общего кода, то должно быть два разных представления. Если общий код есть, то:

а) делается более обобщенная модель на оба класса (например с помощью интерфейсов, пример я привел 16271579 )

б) делается базовое представление, которое реализует общую для обеих моделей логику, а специфические действия для каждой модели выводятся в частичные представления и вызываются с помощью RenderPartial из базового представления. При этом в базовом представлении также можно применять обобщенную логику, как в п.а), а во вложенные представления передавать уже приведенную вниз модель.
...
Рейтинг: 0 / 0
08.07.2014, 11:52
    #38690206
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
Shocker.Pro,

Спасибо, я просто думал еще есть другие способы.
...
Рейтинг: 0 / 0
08.07.2014, 12:01
    #38690220
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC отображение данных на странице
wiktor591другие способы.технически можно, конечно, хоть сто моделей запихнуть в одно представление, если вам нравятся особенные извращения...
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC отображение данных на странице / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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