powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Хочу через ViewBag передать данные во View, но просят привязать источник данных.
80 сообщений из 80, показаны все 4 страниц
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38527692
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу через ViewBag передать данные в View (в похожей проге писал 1х1 и все работало), но на этот раз, когда я заполняю поля и нажимаю submit, меня просят привязать данные:
System.InvalidOperationException: Прежде чем может быть выполнена эта операция, должен быть привязан источник данных.
Заранее извиняюсь за русскую студию.

Модель, контроллер, вью:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public class IngListModel
    {
        public int IngListId { get; set; }
        public int ProdId { get; set; }
        public int IngId { get; set; }
        public string ProdName { get; set; }
        public string IngName { get; set; }
        public float Amount { get; set; }
    }



Код: 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.
        public ActionResult IngList1(int id)
        {
            ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();
            return View();
        }

        [HttpPost]
        public ActionResult IngList1(IngList inglist)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.IngLists.Add(inglist);
                    db.SaveChanges();
                    return RedirectToAction("IngList1");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, ex);
            }
            return View();
        }



Код: html
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.
@{
    ViewBag.Title = "IngList1";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>@Html.Display("Name")</h2>
<br>
@{
    var grid = new WebGrid(ViewBag.viewModel,
        rowsPerPage: 10,
        defaultSort:"ProdName",
        columnNames:new [] {"IngName", "Amount"}
        );
}

@grid.GetHtml(

fillEmptyRows:false,
mode:WebGridPagerModes.All,

columns:grid.Columns
(
grid.Column("IngName", header:"Сырье"),
grid.Column("Amount", header:"Кг"),
grid.Column("", header:"", format: @<text>@Html.ActionLink("Удалить", "DeleteIngList", new { id = item.IngListId }, new { @class = "btn btn-success" })</text>)
)
)

@model EnzoApp.Models.IngList
<h2>Добавить ингредиент</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>IngList</legend>

        <div class="editor-field">
            @Html.DropDownList("ProdId", (IEnumerable<SelectListItem>) ViewBag.Product, "--Выберите продукт--", new { @style = "width: 300px;" })
            @Html.ValidationMessageFor(model => model.ProdId)
        </div>

        <div class="editor-field">
            @Html.DropDownList("IngId", (IEnumerable<SelectListItem>) ViewBag.Ingredient, "--Выберите сырье--", new { @style = "width: 300px;" })
            @Html.ValidationMessageFor(model => model.GoodId)
        </div>

        <div class="editor-label">
            Количество
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.amount, new { @style = "width: 270px;" })
            @Html.ValidationMessageFor(model => model.amount)
        </div>

        <p>
            <input type="submit" value="Добавить" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Назад", "Products1")
</div>
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38538879
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kim-kong,

Вбил данные в БД вручную, grid рабочий, значит я криво ввожу данные.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38538899
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViewBag зло
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539063
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУViewBag зло

для DropDownList и прочих таких штук, ViewBag -- то што надо
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539078
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУViewBag зло

для DropDownList и прочих таких штук, ViewBag -- то што надо

Ты чё там куришь, злыдень?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539111
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы чё там куришь, злыдень?

я те серьёзна говорю, если затолкать IEnumerable<SelectListItem> во ViewData/Bag с ключом поля, то он отрендерится в DropDownList:

Код: c#
1.
2.
3.
4.
5.
6.
7.
// где-то в фильтре или контроллере:

ViewBag.CategoryId = new SelectList(categories, "Id", "Name");

// потом во вью:

@Html.DropDownList("CategoryId");
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539119
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Wasson говорит, что Razor - отстой, Knockout через JSON рулит ... :)
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539127
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikMike Wasson говорит, что Razor - отстой, Knockout через JSON рулит ... :)

это он говорит:

http://mikewasson.com/

?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539133
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Если есть предложение лучше - вперед.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539179
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо согласен с hVostt, чтоб не засорять целевую модель бесполезными списками
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539188
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТы чё там куришь, злыдень?

я те серьёзна говорю, если затолкать IEnumerable<SelectListItem> во ViewData/Bag с ключом поля, то он отрендерится в DropDownList:

Код: c#
1.
2.
3.
4.
5.
6.
7.
// где-то в фильтре или контроллере:

ViewBag.CategoryId = new SelectList(categories, "Id", "Name");

// потом во вью:

@Html.DropDownList("CategoryId");



Уволить без выплаты материального пособия.

http://codearticles.ru/articles/764

handmadeFromRuимхо согласен с hVostt, чтоб не засорять целевую модель бесполезными списками
-1
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539231
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...


я те серьёзна говорю, если затолкать IEnumerable<SelectListItem> во ViewData/Bag с ключом поля, то он отрендерится в DropDownList:

Код: c#
1.
2.
3.
4.
5.
6.
7.
// где-то в фильтре или контроллере:

ViewBag.CategoryId = new SelectList(categories, "Id", "Name");

// потом во вью:

@Html.DropDownList("CategoryId");



Уволить без выплаты материального пособия.

http://codearticles.ru/articles/764

handmadeFromRuимхо согласен с hVostt, чтоб не засорять целевую модель бесполезными списками
-1

+100500

Особенно если таких выпадающих списков на форме много, замучаешься ViewBag писать сначала в методе контроллера, а потом в разметке.

View должен отображать жанные из одного места - из модели. При подходе
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
 ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();



вы получаете не формируете целостную модель, это просто данные полученные разными запросами, без каких либо зависимостей.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539254
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
и? поля просто висят и просто заполняются и никакой нагрузки смысловой не несут.

МСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539300
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuМСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности
Что значит надоело? Модель представления - это описание представления, чем "типизированнее" она будет, тем в будущем будет легче сопровождать такое решение, тестировать и вносить изменения. Залипушки на вьюбэгах - это шаг в пропасть , на странице из одного комбобокса это еще не страшно, на страницах с множеством контролов - это просто хаос.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539345
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRueJack,
и? поля просто висят и просто заполняются и никакой нагрузки смысловой не несут.

МСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности

А что и? У вас нет понимания архитектуры решения, таких разработчиков, которым надоело писать нормально сопровождаемый код, я увольняю. Как тимлидер.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539351
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackhandmadeFromRueJack,
и? поля просто висят и просто заполняются и никакой нагрузки смысловой не несут.

МСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности

А что и? У вас нет понимания архитектуры решения, таких разработчиков, которым надоело писать нормально сопровождаемый код, я увольняю. Как тимлидер.
+1, если желание писать красиво и правильно пропадает, лучше валить из разработки на пастбище, увеличивать надои страны.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539353
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧто значит надоело? Модель представления - это описание представления, чем "типизированнее" она будет, тем в будущем будет легче сопровождать такое решение, тестировать и вносить изменения. Залипушки на вьюбэгах - это шаг в пропасть , на странице из одного комбобокса это еще не страшно, на страницах с множеством контролов - это просто хаос.

типизированная модель представления -- очень хорошо. но отказываться от вьюбэга при этом глупо. пример с DropDownList -- тот случай, когда ViewBag использовать нужно.

вот это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
@Html.DropDownListFor(model =>
    model.SelectedID,
    Model.Items.Select(d => new SelectListItem { Value = d.ID.ToString(), Text = d.Text })
)

public List<MyDto> Items { get; set; }
public string SelectedID { get; set; }



обсолютно неюзабельная вафля, не годится даже в качестве примеров для учебников.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539357
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

У меня не такое масштабное приложение, чтобы об этом задумываться, вьюбаг хорошо зашел.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539361
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ну как те сказать. я не вижу разницы просто: что я прокидываю коллекции через модель для биндинга дропдаунов что через ViewBag . Тестам это не мешает так как на входе модель, тупо id-ники выбранных элементов. Эти искусственные коллекции не несут какой то логики кроме как забиндить список и все. Ты еще скажи ты title и meta без ViewBag прокидываешь. Это чисто мои ощущения даже с большим кол-во контролов, конечно будет фейл если имена переменных во ViewBag пересекутся или поле ключа переименовали. и МСУ давай без твоих шуточек про стадо и прочее. я тебе свои аргументы ты мне свои. а какашками все умеют кидаться.

eJack
в чем нормальность? прокинули коллекцию Id-Name без какой либо смысловой нагрузки? по вашему я не смогу тестами покрыть это дело?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539362
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackhandmadeFromRueJack,
и? поля просто висят и просто заполняются и никакой нагрузки смысловой не несут.

МСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности

А что и? У вас нет понимания архитектуры решения, таких разработчиков, которым надоело писать нормально сопровождаемый код, я увольняю. Как тимлидер.
+1, если желание писать красиво и правильно пропадает, лучше валить из разработки на пастбище, увеличивать надои страны.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539395
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackОсобенно если таких выпадающих списков на форме много, замучаешься ViewBag писать сначала в методе контроллера, а потом в разметке.

View должен отображать жанные из одного места - из модели.


понятие "декомпозиция" вам о чём-нибудь говорит? данные для выпадающего списка прибивать гвоздями к вью модели -- практика однозначно плохая и неэффективная.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539399
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
целевую модель никто не пихает во вьюбег, а если смотреть ваш примеру - вы имели ввиду это, только вспомогательные списки.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539403
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтипизированная модель представления -- очень хорошо. но отказываться от вьюбэга при этом глупо.
Так а зачем он мне нужен, если мои задачи покрываются полной типизацией?

hVosttпример с DropDownList -- тот случай, когда ViewBag использовать нужно.
Пример с DropDownList -- тот случай, когда ViewBag использовать не нужно.

hVosttвот это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
@Html.DropDownListFor(model =>
    model.SelectedID,
    Model.Items.Select(d => new SelectListItem { Value = d.ID.ToString(), Text = d.Text })
)

public List<MyDto> Items { get; set; }
public string SelectedID { get; set; }



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

handmadeFromRuМСУ,
ну как те сказать. я не вижу разницы просто: что я прокидываю коллекции через модель для биндинга дропдаунов что через ViewBag .
Не видишь разницу между типизируемым тестируемым кодом и гавнокодом с вью баг? Ну извини, мне тут нечего сказать. Это как использовать DataTable и ORM.

handmadeFromRuТестам это не мешает так как на входе модель, тупо id-ники выбранных элементов. Эти искусственные коллекции не несут какой то логики кроме как забиндить список и все. Ты еще скажи ты title и meta без ViewBag прокидываешь. Это чисто мои ощущения даже с большим кол-во контролов, конечно будет фейл если имена переменных во ViewBag пересекутся или поле ключа переименовали. и МСУ давай без твоих шуточек про стадо и прочее. я тебе свои аргументы ты мне свои. а какашками все умеют кидаться.
Это не искуственные коллекции, это описание представления. Они нужны всегда и везде. Даже в том же MVVM подходе ты точно так же описываешь свою коллекцию и SelectedId и намапливаешь в XAML. А ViewBag я бы вообще запретил бы в MVC.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539408
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostteJack
понятие "декомпозиция" вам о чём-нибудь говорит?
Декомпозиция головного мозга?

hVosttданные для выпадающего списка прибивать гвоздями к вью модели -- практика однозначно плохая и неэффективная.
Любые данные (а не только выпадающего списка) нужно прибивать гвоздями к вью модели. На то она и вью модель.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539491
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто не искуственные коллекции, это описание представления. Они нужны всегда и везде. Даже в том же MVVM подходе ты точно так же описываешь свою коллекцию и SelectedId и намапливаешь в XAML.
вот тут ты меня переубедил.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539523
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu, по поводу title и иже http://codearticles.ru/articles/2438
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539524
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛюбые данные (а не только выпадающего списка) нужно прибивать гвоздями к вью модели. На то она и вью модель.

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[PopulateCategories]
public ActionResult Edit(int id)
{
   ...
   return View(model);
}

[PopulateCategories]
public ActionResult Edit(SomeViewModel model)
{
   ...
   return View(model);
}




Модель и данные для выпадающего списка -- не связаны. И не надо их сшивать белыми нитками. Нет в этом никакой потребности. Атрибут [PopulateCategories] складывает данные во ViewData только при рендеринге View и не зависит от конкретной модели, где эти данные могут понадобиться.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539529
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhandmadeFromRu, по поводу title и иже http://codearticles.ru/articles/2438

жесть какая-то. ну ты и извращениц
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539560
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЛюбые данные (а не только выпадающего списка) нужно прибивать гвоздями к вью модели. На то она и вью модель.

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[PopulateCategories]
public ActionResult Edit(int id)
{
   ...
   return View(model);
}

[PopulateCategories]
public ActionResult Edit(SomeViewModel model)
{
   ...
   return View(model);
}




Модель и данные для выпадающего списка -- не связаны. И не надо их сшивать белыми нитками. Нет в этом никакой потребности. Атрибут [PopulateCategories] складывает данные во ViewData только при рендеринге View и не зависит от конкретной модели, где эти данные могут понадобиться.

Никому не показывай этот кромешный ад. Связыванием данных и модели занимается контроллер и никто иной. У тебя же получается каша. Что-то на модель вяжется с контроллера, что-то с атрибута и вью бага. Маразматичнее еще я ничего в жизни не видел. Именно для таких упоротокодеров создавался чудесный мвц, но они его снова опошлили и забросали пометом. Ужос.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539562
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Атрибуты для наполнения вью багов. Такое даже в страшном сне не приснится
Скиана, ты где. Посмотри на эту жуть :)
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539637
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuМСУ,
ну как те сказать. я не вижу разницы просто: что я прокидываю коллекции через модель для биндинга дропдаунов что через ViewBag . Тестам это не мешает так как на входе модель, тупо id-ники выбранных элементов. Эти искусственные коллекции не несут какой то логики кроме как забиндить список и все. Ты еще скажи ты title и meta без ViewBag прокидываешь. Это чисто мои ощущения даже с большим кол-во контролов, конечно будет фейл если имена переменных во ViewBag пересекутся или поле ключа переименовали. и МСУ давай без твоих шуточек про стадо и прочее. я тебе свои аргументы ты мне свои. а какашками все умеют кидаться.

eJack
в чем нормальность? прокинули коллекцию Id-Name без какой либо смысловой нагрузки? по вашему я не смогу тестами покрыть это дело?

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

начнем с этих строк:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();
            return View();



Вы для каждого View будите коллекции протягивать и их тестами покрывать? Флаг в руки и барабан на шею - но играйте на них не у меня! А как же работа с кешами, или если добавили или изменили атрибуты, или теперь данные по контрагентам подтянгиваются не из базы а из внешнего сервиса - переписываем все view, методы контролеров - так?

Далее, у такой сущности будет пара десятков выпадающих списков и вы будите так на всех View их отображать и как отлаживать будите без типизации?
Код: c#
1.
2.
3.
4.
5.
6.
7.
// где-то в фильтре или контроллере:

ViewBag.CategoryId = new SelectList(categories, "Id", "Name");

// потом во вью:

@Html.DropDownList("CategoryId");



В моем случае и МСУ предложенном(нормальном), на этапе компиляции получите отлуп - а тут уже на сервере будите отлаживать - дольше и не эффективнее - кому это нужно?

hVostteJackОсобенно если таких выпадающих списков на форме много, замучаешься ViewBag писать сначала в методе контроллера, а потом в разметке.

View должен отображать жанные из одного места - из модели.


понятие "декомпозиция" вам о чём-нибудь говорит? данные для выпадающего списка прибивать гвоздями к вью модели -- практика однозначно плохая и неэффективная.

Давайте раскройте мне тайну про декомпозицию?!

handmadeFromRueJack,
целевую модель никто не пихает во вьюбег, а если смотреть ваш примеру - вы имели ввиду это, только вспомогательные списки.

Вспомогательные списки - это что?, это не свойства бизнес сущности? Приведите примеры
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539649
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu, hVostt,

а так же я бы хотел увидеть в вашем исполнении (с применением ViewBag) методы контроллера и View:

index, insert (Get), insert(Post), update(Get), update(Post), delete (Get, Post) особенно в свете фразы -

handmadeFromRu
........ по вашему я не смогу тестами покрыть это дело?


ну и тесты собственно.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539919
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАтрибуты для наполнения вью багов. Такое даже в страшном сне не приснится
Скиана, ты где. Посмотри на эту жуть :)

фильтры являются частью логики контроллера (аспекты). в чём проблема-то?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539920
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСвязыванием данных и модели занимается контроллер и никто иной. У тебя же получается каша.

никакой каши. каждый отвечает чётко за свою узко специализированную задачу. если хочется типизированности, то тогда выпадающие списки надо генерить через отдельный PartialAction, и туда пробрасывать свою любимую типизированную модель. ради бога.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539922
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackДавайте раскройте мне тайну про декомпозицию?!

никакой тайны. разделяй и властвуй. ибо нехрен
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539923
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackа так же я бы хотел увидеть в вашем исполнении (с применением ViewBag) методы контроллера и View:

я уже привёл кусок кода. экстраполируйте. что касается тестирования, фильтры тестируются не хуже (а даже и лучше) контроллеров. показать как должен выглядеть тест, который после работы фильтра должен обнаружить во ViewBag коллекцию SelectListItem? в чём проблема, ещё раз? вы пока оба вместе с МСУ кроме размахивания руками в воздухе ещё не указали ни на одну проблему в таком подходе.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38539996
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttфильтры являются частью логики контроллера (аспекты). в чём проблема-то?
Проблему наглядно описал eJack на примере юридического лица, его нетривиальных атрибутов и связей. Туда же в замес попала безопасность с ролями, которая должна запрещать доступ к тем или иным данным, а так же усекать выборки в разрезе прав. Причем, эта типизированная цепочка не должна зависеть от каких-то атрибутов и не должна быть прибита гвоздями к MVC. Эту модель можно использовать хоть в WPF, хоть в WinForms, хоть в SOA. Вот это называется правильная архитектура. А у тебя какой-то бред сивой кобылы, смесь мух и тараканов. Лично мне не нужна такая каша.

hVosttникакой каши. каждый отвечает чётко за свою узко специализированную задачу. если хочется типизированности, то тогда выпадающие списки надо генерить через отдельный PartialAction, и туда пробрасывать свою любимую типизированную модель. ради бога.
Да пофиг, как именно генерить представление. Хоть циклом @foreach динамически создавать select с option'ами. Самое главное - должна быть полноценная типизированная модель, которая будет намапливаться на представление, с которой можно удобно и гибко работать, которую можно прозрачно покрывать тестами и создавать mock'и, которую можно использовать вне контекста MVC и так далее. А как создать конечный комбобокс на клиенте - дело десятое и малопринципиальное. Мне нравится создание "комбобокса на лету", как я показал выше. Никаких трудозатрат и лишних телодвижений по созданию чего-то там где-то там. Просто, типизированно и гибко.

hVosttвы пока оба вместе с МСУ кроме размахивания руками в воздухе ещё не указали ни на одну проблему в таком подходе.
Тебе уже всё разжевали и в рот положили. handmadeFromRu согласился с доводами, потому что понял суть сказанного и взвесил за и против. У тебя же с пониманием, как всегда, затяжной период.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540153
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack, давай продолжим диалог дальше, хоть я уже и согласился с МСУ, и это уже ничего не меняет. Пафос про тимлида и увольнение зачем это писать? да может я не столь опытен и могу ошибаться, но аргументируй! а не пишите я тимлид и уволил бы. Но мне стало интересно по поводу некоторых ваших фраз. И мы да говорим в контексте ViewModel а не бизнес модели, почувствуйте разницу.

eJackА теперь давайте решим нормальную задачу и возьмем сущность посложнее, например, клиент - юр. лицо.
У него куча классификаторов, групп, категорий, лимитов, продукты, история запросов и т.д., это не считая обычных атрибутов типа адреса, контакты, контрагенты, доверенные лица и т.д. И стоит задача - разработать View для работы с катрочкой клиентов, да еще и для разных ролей пользователей разработать разные View с возможность отображать только доступную этой роли информацию и доступные операции.

хм а зачем ложить все яйца в корзину если можно разбить на подвюьшки? причем все равно конечный пользователь будет редактировать только какую то часть всего того что вы перечислили. Если у меня проекты разные asp mvc asp forms wpf я не смогу удержать 1 и туже ViewModel , по простой причине что UI будет не такой, но бизнес модель таже и остается напамить её на конкретную ViewModel. Что показывать в разрезе прав это уровень бл и модели бл. а бл часто не равно контролеру. в ViewModel контроллер поместил, то и будет отображено. Приведу пример где во ViewModel не получится прокинуть списки всегда, у вас каскадные дропдауны. Вы не сможете прокинуть все возможные варианты прокинуть в таком случае.

eJackначнем с этих строк:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();
            return View();



никто целевую модель не кинет во вьюбег, вы передергиваете, вьюшка типизирована, не типизированы только списки для дропдаунов. читаем внимательно.

eJackВы для каждого View будите коллекции протягивать и их тестами покрывать? Флаг в руки и барабан на шею - но играйте на них не у меня! А как же работа с кешами, или если добавили или изменили атрибуты, или теперь данные по контрагентам подтянгиваются не из базы а из внешнего сервиса - переписываем все view, методы контролеров - так?

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

eJackДалее, у такой сущности будет пара десятков выпадающих списков и вы будите так на всех View их отображать
пара десятков выпадающий на 1 вью? эм как минимум не правильный UI.

eJackи как отлаживать будите без типизации?
....
на этапе компиляции получите отлуп - а тут уже на сервере будите отлаживать - дольше и не эффективнее - кому это нужно?

вот уже по делу и я это сам уже писал на 1 странице, что могут быть проблемы. я тут согласен полностью. + dynamic все таки медленная штука если хайлоад

eJackВспомогательные списки - это что?, это не свойства бизнес сущности? Приведите примеры

это нифига не свойства бизнес сущности, это свойство модели представления и не более.

eJackindex, insert (Get), insert(Post), update(Get), update(Post), delete (Get, Post) особенно в свете фразы -

объясните зачем мне тестить каждый экшен? зачастую бл != контролеру\экшен. я тестирую бл и не важно что у меня веб формы, асп мвц или wpf. в тестах для бл подменяю на мок-репо источник данных. может я не знаю, в силу малоопытности и вы меня обогатите знаниями зачем мне тестить представление. Мне хватает чтоб силениум протестил юзер кейсы для вьюшек.


п.с. мне интересно что вы скажите и мне не стремно сказать, что я не прав если мне аргументируют. у меня сложилось впечатление, что у вас вьюмодель это модель бизнес логики. Я может не правильно мыслил и после этого стану лучше понимать.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540275
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRueJack, давай продолжим диалог дальше, хоть я уже и согласился с МСУ, и это уже ничего не меняет. Пафос про тимлида и увольнение зачем это писать? да может я не столь опытен и могу ошибаться, но аргументируй! а не пишите я тимлид и уволил бы.
Не ной, а сконцентрируйся на проблеме лучше. Ныть - в детский сад.

handmadeFromRuНо мне стало интересно по поводу некоторых ваших фраз. И мы да говорим в контексте ViewModel а не бизнес модели, почувствуйте разницу.
Так тем более, вью-модель должна вообще полностью описывать UI. Или ты к чему это спросил? К тому, что вью модель не нужно тестировать? Ну почувствовали разницу, а дальше-то что?

handmadeFromRuхм а зачем ложить все яйца в корзину если можно разбить на подвюьшки? причем все равно конечный пользователь будет редактировать только какую то часть всего того что вы перечислили. Если у меня проекты разные asp mvc asp forms wpf я не смогу удержать 1 и туже ViewModel , по простой причине что UI будет не такой, но бизнес модель таже и остается напамить её на конкретную ViewModel. Что показывать в разрезе прав это уровень бл и модели бл. а бл часто не равно контролеру. в ViewModel контроллер поместил, то и будет отображено. Приведу пример где во ViewModel не получится прокинуть списки всегда, у вас каскадные дропдауны. Вы не сможете прокинуть все возможные варианты прокинуть в таком случае.
Какие подвьюшки, ты о чем? Есть логика, есть данные. На основе логики нужно скрыть данные или их усечь. Всё это делается с моделью, вью отображает данные. Генерация или сокрытие контролов в зависимости от логики - на лету в разоре. Я уже тут сто раз вам разжевывал про ISecurityService, который выпиливает из модели ненужное и предоставляет все данные по анализу доступности того или иного объекта. Какие вьюшки?

handmadeFromRuникто целевую модель не кинет во вьюбег, вы передергиваете, вьюшка типизирована, не типизированы только списки для дропдаунов. читаем внимательно.
Осталось только понять, что есть целевая модель, а что есть нецелевая модель. И почему списки для комбобоксов не типизированы? Чем они такие особенные? Есть еще и гриды master-detail-detail-..., чеклистбоксы, n-колоночные комбобоксы, шедулеры, и прочая списочная хрень. Ты всё это тоже предлагаешь выносить в этот нетипизированный кал? Так проще сразу убить себя.

handmadeFromRuтестировать представление эм зачем? там нет логики и все тривиально, или мне протестить какая верстка на выхлопе? А что кеши? или сторонние сервисы? все данные придут из бл. какие проблемы? и как это решит ваша вьюмодель то? или мы мешаем вьюмодель с модель бизнес логики?
Тестировать представление тоже нужно, и логика в нем тоже есть. Банальные даже ифы для генерации или сокрытия контролов. Да и речь не только в тестировании вью-модели, как ты не можешь понять этого.

handmadeFromRueJackДалее, у такой сущности будет пара десятков выпадающих списков и вы будите так на всех View их отображать
пара десятков выпадающий на 1 вью? эм как минимум не правильный UI.
Не нужно судить о неправильности на основе своего скудного опыта. Пара десятков комбобоксов - это мелочи. Посиди как-нить на досуге в бухгалтерии серьезной компании (1С, аксапта или SAP) и посмотри на их формы. После этого можешь пойти и снова убить себя. Дабл пенитрэйшен фаталити.

handmadeFromRuп.с. мне интересно что вы скажите и мне не стремно сказать, что я не прав если мне аргументируют. у меня сложилось впечатление, что у вас вьюмодель это модель бизнес логики. Я может не правильно мыслил и после этого стану лучше понимать.
Ты не прав. Позволь мне это сказать за еджека. Остальное придет с опытом.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540475
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВот это называется правильная архитектура. А у тебя какой-то бред сивой кобылы, смесь мух и тараканов.

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

давай ещё раз поясню. у меня в модели есть поле CategoryId. это некий код, обозначающий связь с сущностью. в модели нет никакой коллекции этих сущностей. нет и быть не может. какого хрена я должен наклать говна с ложкой в модель? зачем? это легко и элегантно решается, проблем пока не вижу.

обозначьте хоть одно. тыкните носом. только без разглагольствований "вот так правильно, а так неправильно" -- не филосовствуйте. покажите проблему.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540476
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУУ тебя же с пониманием, как всегда, затяжной период.

да я бы рад. но вы пока ходите с умным видом вокруг да около. по сути не говорите. похоже что-то знаете такое, что никто не знает
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540552
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУВот это называется правильная архитектура. А у тебя какой-то бред сивой кобылы, смесь мух и тараканов.
эй-эй. как раз таки я именно эту проблему и решил. мухи отдельно, кобылы с мухми тоже порознь. а вот вы с ежиком напялили на себя православно-типизированный противогаз с топчитесь с какашках с возгласами "а нам не воняет""
Ты ничего не решил, ты сделал очередную глупость. Часть инициализации модели представления вынес в отдельный скоуп. И всё ради чего, ради каких-то там комбобоксов? Только полный чайник будет ломать модель из-за удобства программирования UI. Да и какое удобство, как-раз наоборот.

hVosttдавай ещё раз поясню. у меня в модели есть поле CategoryId. это некий код, обозначающий связь с сущностью. в модели нет никакой коллекции этих сущностей. нет и быть не может. какого хрена я должен наклать говна с ложкой в модель? зачем? это легко и элегантно решается, проблем пока не вижу.
Я тебе десятый раз повторяю, если в UI требуется вывести какие-то данные, они безотлагательно должны фигурировать в модели. Это даже не обсуждается. Мне твоё UI фиолетово, завтра моя модель уйдет в WPF и что я буду в XAML писать, твои экшен атрибуты из MVC? Да хрен бы с WPF, даже со здравой точки зрения инициализация данными в n местах - бред сивой кобылы. Тебе писать код противопоказано, серьезно Иногда ты такой бред несешь, что даже читать его опасно.

hVosttобозначьте хоть одно. тыкните носом. только без разглагольствований "вот так правильно, а так неправильно" -- не филосовствуйте. покажите проблему.
Разжевали и в рот положили. Что не ясно?

hVosttМСУУ тебя же с пониманием, как всегда, затяжной период.
да я бы рад. но вы пока ходите с умным видом вокруг да около. по сути не говорите. похоже что-то знаете такое, что никто не знает
Уже всё сказано и написано. Я не виноват, что до тебя не доходит...
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540563
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttобозначьте хоть одно. тыкните носом. только без разглагольствований "вот так правильно, а так неправильно" -- не филосовствуйте. покажите проблему.

Код: html
1.
@Html.DropDownList("CategorYId")


Тут студия не палит ошибку, вариант? )
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540694
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

пока что вижу сплошную демагогию. так дескать правильно, в трактатах записано, а так неправильно. но почему? хз, иди сам додумай.

МСУЯ тебе десятый раз повторяю, если в UI требуется вывести какие-то данные, они безотлагательно должны фигурировать в модели. Это даже не обсуждается.

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

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

Код: html
1.
@Html.DropDownList("CategorYId")



Тут студия не палит ошибку, вариант? )

кхм.

@Html.DropDownList("")

а так вообще пох, и ведь будет работать
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540704
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТолько полный чайник будет ломать модель из-за удобства программирования UI. Да и какое удобство, как-раз наоборот.

как раз ты и ломаешь модель. конкретное действие контроллера работает с конкретной моделью. нехрен туда пихать всё что надо и ненадо. данные для выпадающего списка нужны отдельному контролу. он может располагаться во многих местах и учавствовать в отображении разных моделей. и делать мне больше нех, как забивать один и тотже список 10 раз, размазывать эту какаху на все контроллеры и действия. так не делается.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540714
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите, что вмешиваюсь в ваш высоконаучный спор. А что мешает сделать отдельный класс для всех этих списков и цеплять его к модели как свойство?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540830
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкхм.

@Html.DropDownList("")

а так вообще пох, и ведь будет работать

Вот именно, так что используем DropDownListFor ? )
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540836
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, пока что вижу сплошную демагогию. так дескать правильно, в трактатах записано, а так неправильно. но почему? хз, иди сам додумай.
Типизация - это демагогия? Ну могу посоветовать только убиться после таких слов :)

hVosttМСУЯ тебе десятый раз повторяю, если в UI требуется вывести какие-то данные, они безотлагательно должны фигурировать в модели. Это даже не обсуждается.
во-первых. не какие-то, а весьма конкретные. естественно они должны быть в модели. но ты запихиваешь в модель всё что попало. в итоге это у тебя не модель, а куй знает что. что попало короче.
Я запихиваю в модель не всё, что попало, а всё, что нужно представлению. В итоге у меня модель (представления) - полностью описывает UI, от начала и до конца. Как и должно быть со всеми вытекающими бенефитами. А твой хардкор просто неприемлем, особенно MVVM-щики тебя бы кастрировали за такой говнокод, не меньше.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540901
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонhVosttкхм.

@Html.DropDownList("")

а так вообще пох, и ведь будет работать

Вот именно, так что используем DropDownListFor ? )

зашем? @Html.EditorFor(x => x.Prop)

в шаблоне для Prop лежит @Html.DropDownList("")

и волки целы и овцы сыты
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540911
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА твой хардкор просто неприемлем, особенно MVVM-щики тебя бы кастрировали за такой говнокод, не меньше.

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


МСУТипизация - это демагогия? Ну могу посоветовать только убиться после таких слов :)

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

SelectListItem же. не надо его лепить к модели. ни к чему. модель это модель.

что касается MVC. если пытаться люто-бешено следовать концепции всё при всё запихать в модель, что будет отображено во вью, тогда надо абсолютно в каждую модель затолкать пользователя, имя которого надо рисовать в шапке, типа "привет, Вася Пупкин!". марзм? естественно.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540946
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt кладётся он во вьюбэг не просто по какому-то выдуманному ключу, а по ключу поля, к которому привязывается. это здесь тоже можно обойтись без магических строк и получать из мета. ниче не сломается, и тестится великолепно.
Дык вьюбэг, он уже весь магический )
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540964
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
зашем? @Html.EditorFor(x => x.Prop)

в шаблоне для Prop лежит @Html.DropDownList("")

и волки целы и овцы сыты
и шаблон на каждый чих )
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540966
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе ной, а сконцентрируйся на проблеме лучше. Ныть - в детский сад.

тебе показалось

МСУК тому, что вью модель не нужно тестировать?

да. там нет логики и не должно быть, там готовые данные на отображение

МСУИ почему списки для комбобоксов не типизированы? Чем они такие особенные? Есть еще и гриды master-detail-detail-..., чеклистбоксы, n-колоночные комбобоксы, шедулеры, и прочая списочная хрень. Ты всё это тоже предлагаешь выносить в этот нетипизированный кал?
потому что спор начался с @Html.DropDownList("CategorYId"), где тут типизация. Я это не предлагал, мое предложение было что списки для вью можно прокинуть через вьюбаг и не более, так что не надо. Потом я согласил что это составляющая вьюмодели. Но к примеру если каскадные списки получится вьюмодель без списков, только с ключами.

МСУТестировать представление тоже нужно, и логика в нем тоже есть. Банальные даже ифы для генерации или сокрытия контролов. Да и речь не только в тестировании вью-модели, как ты не можешь понять этого.

покажи мне как ты покроешь тестами вью с логикой.

МСУНе нужно судить о неправильности на основе своего скудного опыта. Пара десятков комбобоксов - это мелочи

поверю, потому что не сталкивался с такими дикими интерфейсами.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540970
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

зашем? @Html.EditorFor(x => x.Prop)

в шаблоне для Prop лежит @Html.DropDownList("")

и волки целы и овцы сыты[/quot]
Какой бред. Зачем мне эта петрушка в залипушками в проекте? Это не проект, это какая-то свалка отходов. И всё ради чего, ради банальной отрисовки комбобокса? Завязывай уже с наркотой :)

hVosttпри чем тут mvvm-щики. там вообще другой подход. совершенно другой. и тоже, кстати, в модель всё подрят не пихают. разбивают на разные модели с наименьшей зависимостью друг от друга.
Там точно такой же подход, принципиально ничем не отличающийся. Только маппинги более мощные на XAML с кучами фишек и вкусностей. Идея такая же и стара как мир, инициализировать модель представления, намапить на вью, снять измененные данные с модели представления и отправить их в лес. Те же яйца, только приправленные немного другой спецификой технологии. Ты бы это понял, если имел кругозор.

hVosttМСУТипизация - это демагогия? Ну могу посоветовать только убиться после таких слов :)
если ты не понял, я против типизации ничего не имеют против. только за. SelectList офигенно типизирован для любой коллекции ключ-значение. кладётся он во вьюбэг не просто по какому-то выдуманному ключу, а по ключу поля, к которому привязывается. это здесь тоже можно обойтись без магических строк и получать из мета. ниче не сломается, и тестится великолепно.
Постой. Только что ты рвал горло и вопил о том, что

Код: c#
1.
@Html.DropDownList("CategoryId")



наше всё. Теперь ты говоришь, что у тебя всё типизированно и здорово. Какая типизация может быть в том, что я написал выше? Или ты пытаешься как-то выкрутиться и придумываешь всё новые и новые схемы самонаёба в виде @Html.EditorFor(x => x.Prop)?

Я тебя не понимаю, ты скачешь как кузнечик по кустам и не можешь определиться с истиной. Может хорош писать гавнокод и пора включать голову?

В моём варианте никаких дополнительных танцев с бубнами не нужно, имеем честную модель, имеем прозрачный вью, имеем линейную логику инициализации модели. Всё настолько просто, насколько это можно себе представить. Зачем мне тут атрибуты, фильтры, шаблоны с Prop, волки и овцы?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38540992
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuтебе показалось
Ок, пусть будет так.

handmadeFromRuМСУК тому, что вью модель не нужно тестировать?

да. там нет логики и не должно быть, там готовые данные на отображение
В любой более или менее сложной системе во вью есть всегда логика. Начиная от валидаторов (WebForms), javascript и т.д., и кончая навороченным умным разором с его @if и @else для генерации html. Особенно разор очень удобен для логики генерации контролов на основе прав пользователя.

handmadeFromRuмое предложение было что списки для вью можно прокинуть через вьюбаг и не более, так что не надо. Потом я согласил что это составляющая вьюмодели. Но к примеру если каскадные списки получится вьюмодель без списков, только с ключами.
Какая разница, какие списки, каскадные или феерические, с лампочками и рюшечками или с коровьим выменем. UI может быть самым разнообразным, а его модель неизменна. В том весь и цимус, что если модель содержит все данные для работы, UI можно строить любой без вмешательства в серверный код. Кстати, в этом же плюс и чудесного MVVM. Модель есть, она всё содержит в себе. UI меняй хоть каждый день и ни о чем не думай. Это очень удобно.

handmadeFromRuпокажи мне как ты покроешь тестами вью с логикой.
YouTube Video
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541382
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

ох, ё - вот нафлудили :)

handmadeFromRuПафос про тимлида и увольнение зачем это писать? да может я не столь опытен и могу ошибаться, но аргументируй! а не пишите я тимлид и уволил бы.
Ответ на фразы

авторимхо согласен с hVostt, чтоб не засорять целевую модель бесполезными списками;
МСУ я раньше также в модель прокидывал, но надоело. Ощущение искусственности


Ответ надоело, это в моем понимании пафос разработчика, который отвечает на вопрос - "Почему ты так делаешь" - "Надоело",
Ответный пафос - "Уволен".

Если ответ будет аргументирован и пусть аргументы не совпадают с моим пониманием (и это нормально), но человек приведет нормальные аргументы, то и реакция будет другая.
Но это лирика.

handmadeFromRuхм а зачем ложить все яйца в корзину если можно разбить на подвюьшки?

Часто это жесткое требование бизнеса, например - единое окно обслуживание клиента. Пример из жизни клиент звонит в call-центр. После идентификации клиента (автоматически на основе входящего номера или со слов клиента - не суть) открывается окно(в нашем случае View). В это замечательное View подтягивается ВСЯ инфа по клиенту - что бы оператор понимал как дальше работать с клиентом, что ему предложить, чем помочь - какие условия обслуживания, какие у него "больные" места и очем лучше с ним не говорить. Такие View у нас частенько есть и состав таких View согласуется с заказчиком до запятой.
Так что не разобъеш, в жизни простых задач бывает очень мало.
handmadeFromRuникто целевую модель не кинет во вьюбег, вы передергиваете, вьюшка типизирована, не типизированы только списки для дропдаунов. читаем внимательно.
А почему их обидели? В чем суть разных подходов к формированию вью?

handmadeFromRuтестировать представление эм зачем? там нет логики и все тривиально, или мне протестить какая верстка на выхлопе? А что кеши? или сторонние сервисы? все данные придут из бл. какие проблемы? и как это решит ваша вьюмодель то? или мы мешаем вьюмодель с модель бизнес логики?

Как это вяжется с вашим ответом
handmadeFromRueJack
в чем нормальность? прокинули коллекцию Id-Name без какой либо смысловой нагрузки? по вашему я не смогу тестами покрыть это дело?
Далее
Дело в том что вы прибил гвоздями запросы к БД в методах контроллера - если сегодня вы часть информации получаете из БД а завтра из стороннего сервиса, вы все методы перепишите (причем нескоьлко раз).

Например у вас есть метод insert (GET) и insert(POST):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public ActionResult insert(....) {
ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();
            return View();

}



то в пост методе вам придется повторить все ваши выкруты для ViewBag
Код: 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.
[HttpPost]
        public ActionResult insert(........)
        {
            try
            {
                if (ModelState.IsValid)
                {
// логика проверки
                  .....
                }
            }
            .....

ViewBag.Ingredient = new SelectList(db.Goods, "Id", "Name");
            ViewBag.Product = new SelectList(db.Products, "Id", "Name");
            ViewBag.Name = from a in db.Products where a.Id == id select a.Name;
            ViewBag.viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join g in db.Goods on il.GoodId equals g.Id
                 where (il.ProdId == id) && (il.GoodId == g.Id)
                 select new IngListModel { IngListId = il.Id, ProdId = p.Id, ProdName = p.Name, IngName = g.Name, Amount = il.amount }).ToList();
            return View();
        }



и так для update методов и других. В случае не использования ViewBag просто передадите модель во View(Model) и все.

Тут же мысль про плочение данных из разных источников - в методах контролера модель должна формироваться промежуточным слоем.
Это вообще методы модели (в концепции MVC - Модель: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать )

handmadeFromRu
eJack
Вспомогательные списки - это что?, это не свойства бизнес сущности? Приведите примеры

это нифига не свойства бизнес сущности, это свойство модели представления и не более.
Давайте пример - пока это тоьлко сотрясение воздуха.
Мой пример - категория обслуживания клиента - Базовый, Расширенный, Расширенный+, VIP, БОГ. С точки зрения физического хранения это таблица - справочник. Но для бизнеса это свойство объекта на которое завязанна логика - например тарифы, и доступные услуги (для разных категорий обслуживания они разные) а значит это часть бизнес сущности. теперь ваш вариант.

handmadeFromRu
eJack
index, insert (Get), insert(Post), update(Get), update(Post), delete (Get, Post) особенно в свете фразы -

объясните зачем мне тестить каждый экшен? зачастую бл != контролеру\экшен. я тестирую бл и не важно что у меня веб формы, асп мвц или wpf. в тестах для бл подменяю на мок-репо источник данных. может я не знаю, в силу малоопытности и вы меня обогатите знаниями зачем мне тестить представление. Мне хватает чтоб силениум протестил юзер кейсы для вьюшек.


Затем что в вашем примере вы получаете данные в каждом методе заново - в жизни получение данных и формирование модели дело далеко не тривиальное - нужно тестировать.

handmadeFromRuп.с. мне интересно что вы скажите и мне не стремно сказать,
Это правильно, мне тоже не стремно оказаться не правым, не ошибается только те кто ни чего не делают!
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541475
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКакой бред. Зачем мне эта петрушка в залипушками в проекте? Это не проект, это какая-то свалка отходов. И всё ради чего, ради банальной отрисовки комбобокса? Завязывай уже с наркотой :)

какой-то узкий и однобокий у тебя взгляд на вещи. это обсолютно стандартные решения, нативные -- всё как ты любишь

МСУТолько маппинги более мощные на XAML с кучами фишек и вкусностей.

опять 25. при чём же тут твой XAML? MVVM это паттерн. что там и как делается в XAML по барабану вообще. паттерн MVVM более общий, и применяется в том числе при разработке клиентского JavaScript приложения, где XAML-ом и его отходами даже не пахнет.

МСУнаше всё. Теперь ты говоришь, что у тебя всё типизированно и здорово. Какая типизация может быть в том, что я написал выше?

естественно всё типизировано. шаблоны для EditorFor -- стандартное решение, предложенное вендором и повсеместно используемое. и ещё пока ни один кролик не пострадал. я не понимаю с чем ты споришь. хочешь сделать заявление по поводу того, что ASP.NET MVC спроектировала команда мудаков? и нада же, приделали мерзкий ViewBag, дибильные Editor/Display шаблоны, вот же мерзкие хоббитцы

МСУЯ тебя не понимаю, ты скачешь как кузнечик по кустам и не можешь определиться с истиной. Может хорош писать гавнокод и пора включать голову?

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

МСУВ моём варианте никаких дополнительных танцев с бубнами не нужно, имеем честную модель, имеем прозрачный вью, имеем линейную логику инициализации модели. Всё настолько просто, насколько это можно себе представить. Зачем мне тут атрибуты, фильтры, шаблоны с Prop, волки и овцы?

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

ты применяешь подход аналогичный в XAML, где может ты и плаваешь как рыба в воде. но ASP.NET MVC здесь вполне уместно применять то, что было предложено разработчиками. по большей части. с чем ты споришь, непонятно
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541484
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackОтвет надоело, это в моем понимании пафос разработчика, который отвечает на вопрос - "Почему ты так делаешь" - "Надоело",
Ответный пафос - "Уволен".

как отличить хорошего админа от плохого? хороший весь рабочий день по большей части балдеет, плохой постоянно пашет, сетку понимаешь чинит.

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

"надоело" -- это то, что программиста делает программистом. а за "уволен", пожизненный ярлык "самодур" без навыков самостоятельного мышления. слишком много умных книжек видемо начитались. эх....
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541495
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
...
вот ещё, подумалось, OWIN тогда получается вообще какая-то фигня, там же всё через словари и ключи организовано. никакой типизации! в топку! разрабов на костёр!
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541648
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкакой-то узкий и однобокий у тебя взгляд на вещи. это обсолютно стандартные решения, нативные -- всё как ты любишь
Так никто и не говорит про нестандартность. Нетипизированная DataTable тоже нативщина, но использовать её взамен человеческих ORM есть зло (отдельные случаи не в счет, когда схема данных динамична и типизация идет лесом). Даже имея в руках стандартную лопату можно сломать себе ногу. У тебя как-раз именно такой случай.

hVosttопять 25. при чём же тут твой XAML? MVVM это паттерн. что там и как делается в XAML по барабану вообще. паттерн MVVM более общий, и применяется в том числе при разработке клиентского JavaScript приложения, где XAML-ом и его отходами даже не пахнет.
Что значит причем? Я же тебе объяснил, я хочу использовать модель представления и в XAML морде в том числе. С минимальными переделками, если они будут. Я хочу прозрачную модель, полно описывающую представление. JS по возможностям XAML даже рядом не валялся, как-то глупо даже сравнивать это. То, что в JS можно ваять убогие MVVM залипушки на кнокауте - жалкое подобие того, что можно вытворять на XAML.

hVosttестественно всё типизировано
1. Где тут типизация? @Html.DropDownList("CategoryId")
2. У тебя модель неполная, данные в UI наполняются через какой-то левый свищ, а не через модель.
3. System.Web.Mvc.SelectList это не типизация и в модели этой фигне делать нечего.
Так где ж у тебя "всё типизировано"?

hVosttшаблоны для EditorFor -- стандартное решение, предложенное вендором и повсеместно используемое. и ещё пока ни один кролик не пострадал. я не понимаю с чем ты споришь. хочешь сделать заявление по поводу того, что ASP.NET MVC спроектировала команда мудаков? и нада же, приделали мерзкий ViewBag, дибильные Editor/Display шаблоны, вот же мерзкие хоббитцы
Я тебе уже писал, зачем мне тут шаблоны для EditorFor? Только упоротый кролик будет для комбобоксов создавать шаблоны, создавать отдельные атрибуты, прикручивать их к методам контроллеров. И всё ради того, чтобы наполнить комбобоксы? Это просто верх тупости

hVosttвот именно я включаю голову, и стараюсь использовать инструмент так, как его задумывали. а ты же ушёл с головой в теорию. и вместо того, чтобы решать задачи, решаешь как уложить в теоретические рамки, которые сам же для себя и воздвиг.
Ты пытаешься не использовать инструмент, как задумали, а сделать из проекта свалку тухлых отходов, разобрать которые сможет только прокаченный инопланетянен.

hVosttтебе хз. но вообще это стандартные инструменты, заложенные изначально и развивающиеся до сих пор. если бы эти штуки были бы неудачным решением, отсохло бы ещё на 2-ой версии. просто ты не умеешь ASP.NET MVC готовить.
Я повторяю, никто не говорит тебе, что это нестандартные инструменты. Тебе говорят о том, что для данной задачи эти инструменты не подходят. Абсолютно. Толковый кодер тем и хорош, что применяет правильные инструменты в той задаче, где это нужно. А не пихает их куда ни попадя, а потом заявляет, мол он же применил стандартные инструменты. На счет неумения мною готовить MVC я тихо поржал над тобой в сторонке. Ага.

hVosttты применяешь подход аналогичный в XAML, где может ты и плаваешь как рыба в воде. но ASP.NET MVC здесь вполне уместно применять то, что было предложено разработчиками. по большей части. с чем ты споришь, непонятно
Я не применяю подход, аналогичный в XAML. Срать вообще на XAML и всё стальное, речь не о том - я применяю подход, который граничит с здравостью ума и гибкостью архитектуры. В твоём случае - ни здравости ума, ни гибкости в архитектуре. Как всегда, двойка тебе.

hVostteJack
как отличить хорошего админа от плохого? хороший весь рабочий день по большей части балдеет, плохой постоянно пашет, сетку понимаешь чинит.
Балдеют бездельники, а хороший админ в свободное время развивается и поднимает скилл. Всегда есть куда расти, иначе - деградация. Если уж время совсем много, нормальный админ берет себе подряды и админит удаленно другие конторы. У админа всегда навалом работы.

hVostteJackкак отличить хорошего программиста от плохого? хороший сделает всё, чтобы меньше ипаться. плохой трудяжка будет херачить и копипастить сотни тысяч строк, вместо того, чтобы разочек включить голову.
Так вот ты относишься ко второй категории, тебе об этом и пытаются сказать.

hVostteJack"надоело" -- это то, что программиста делает программистом. а за "уволен", пожизненный ярлык "самодур" без навыков самостоятельного мышления. слишком много умных книжек видемо начитались. эх....
Надоело - это то, что программиста делает гавном. Есть требования свыше от руководителя, есть архитектура, есть конкретная задача, есть сроки - сиди и пили. Надоело - иди коров паси. А "самодур" или "дуросам" - это всё детский сад, не иначе. Когда сам станешь руководителем, будешь принимать на работу людей и увольнять их, ставить задачи, контролировать выполнение, наказывать за фэкапы и прочие косяки, заслонять своих людей от нападков злого бизнеса, премировать и депримировать отличившихся и так далее - вот тогда и поговорим. А пока забейся в свой угол и пиши такой код, который говорят тебе дяди. Если не будешь этого делать - уволен нах. Самодеятельность и прочая феерическая манера поспорить с руководством о правильности кода - даже в детском садике пресекается.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541913
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostteJackОтвет надоело, это в моем понимании пафос разработчика, который отвечает на вопрос - "Почему ты так делаешь" - "Надоело",
Ответный пафос - "Уволен".

как отличить хорошего админа от плохого? хороший весь рабочий день по большей части балдеет, плохой постоянно пашет, сетку понимаешь чинит.

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

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

ответ делитанта - хороший админ будет повышать компетенции в свободное время (это как минимум).
хороший программист сделает все что бы ипаться в будущем менше - что бы в дальнейшем сопровождать систему было проще. (сопровождение это не только правка багов но и развитие!). Если после хорошоего программиста для внесения изменений в структуру БД придется переписать 25 методов контролера и протестировать правильность начитки данных во все ViewBag - это плохой программист.

"надоело" - это ответ не делающий ни кого программистом - а только подтверждаетон лентяй и самодур. На это соответствующая реакция.

Ответ - "я не буду так делать, а буду по другому потому что ..... " это ответ достойный профессионала.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38541961
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорош цепляться к словам) я ж не написал просто надоело и не хочу. а добавил причину, потому что мне так показалось, возникли сомнения . Если кто то считает что это не причина, это его воля так судить и думать я что плохой программист т.к. можно в след раз и не слушать меня.
handmadeFromRu...я раньше также в модель прокидывал, но надоело. Ощущение искусственности
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38542013
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Да уже не к вам вопрос, коллега hVostt развил свою мысль на основе вашего высказывания.
Про то что вы плохой программист ни кто не говорил, мысль была что так делать не хорошо.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38542023
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuХорош цепляться к словам) я ж не написал просто надоело и не хочу. а добавил причину, потому что мне так показалось, возникли сомнения . Если кто то считает что это не причина, это его воля так судить и думать я что плохой программист т.к. можно в след раз и не слушать меня.
handmadeFromRu...я раньше также в модель прокидывал, но надоело. Ощущение искусственности
Я не понимаю тебя, о какой искуственности идет речь?

На пальцах. Вот моя модель представления, по сути какая-то транзакция по клиенту c доступными и выбранным состояниями.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
// vm
public class TransactionModel
{
    public Guid TransactionId { get; set; }
    public DateTime Date { get; set; }
    public Customer Customer { get; set; }
    public IEnumerable<State> States { get; set; }
    public int StateId { get; set; }
}
    
// dm
public class Customer
{
    public int CustomerId { get; set; }
    public string FullName { get; set; }
}

// dm
public class State
{
    public int StateId { get; set; }
    public string Title { get; set; }
}



Данная модель представления как нельзя лучше и полно описывает представление. Представление может быть любым. И WebForms, и MVC, и XAML, и WinForms, и так далее (либо с минимальными (!) переделками).

Вот конкретно для MVC моё UI, а конкретно - комбобокс для состояний.

Код: c#
1.
2.
3.
4.
@Html.DropDownListFor(model =>
    model.StateId,
    Model.States.Select(d => new SelectListItem { Value = d.StateId.ToString(), Text = d.Title })
)



Как видишь, никаких левых вью багов, шаблонов, фильтров и прочей ереси. Что может быть проще?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38542502
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...
...
вот ещё, подумалось, OWIN тогда получается вообще какая-то фигня, там же всё через словари и ключи организовано. никакой типизации! в топку! разрабов на костёр!

к сожалению не работал, не знаю.

Но при этом есть большой опыт работы с мапами (например HashMap) на Java - это тот же ViewBag из ASP.NET MVC, по крайней мере технически должен быть реализован так же. Ад кромешный.

Мест для ошибок, достаточно простых - при достаточно!
Постоянное приведение типов не способствуют увеличению быстродействия - а так же как правило колючем выступает строка - тут всегда есть место где ошибиться.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38543947
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это, никто не хочет мне объяснить, почему я не могу сделать так, как я хочу ?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38544089
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, я как всегда был невнимателен и указал IngId вместо GoodId всем спасибо за внимание. Не ожидал, что я буду причиной таких дискуссий.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885844
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что будет, если во ViewBag будет ключ 'АБВГД' со значением "viewbag - не тру" и в модели будет свойство 'АБВГД' со значением "типизация решает", для которого мы захотим создать список - что будет в списке?

По поводу передачи списков через вьюбаг - это конечно адский треш - кому вообще в голову взбрело так делать..?

Догадаться можно о таком поведении, но выглядит это...
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885847
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ууууууу, крутота.

В хелпере @Html.DropDownListFor нет ни одной перегрузки без входного параметра SelectList,
но его надо выставить в null, если коллекция определена в вьюбаге.

Логично?

А если для читаемости заменить null, на коллекцию из вьюбага? Ну так, чтоб след был виден?
Список появится, но признак выбранного элемента не отрендерится - получим пустой комбобокс. Это если свойство модели и ключ вьюбага будут иметь одинаковые значения.

Логично?

Возникает вопрос (hVostt, ты ходишь на собеседования?) - возможно ли сломать приложение (работающее), просто передав во ViewBag какое-то значение с произвольным ключом?

DropDownListFor - это нахрен закладка какая-то.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885960
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueПо поводу передачи списков через вьюбаг - это конечно адский треш - кому вообще в голову взбрело так делать..?

А в чём ты видишь проблему? Я проблемы не вижу. Вьюбэг универсален. Но никто не заставляет, можешь во вью-модель впихнуть. Почему-то вообще никого не парит, когда надо подтягивать данные во всякие дропдауны динамически, делать это с помощью насквозь нетипизированного JavaScript — это выглядит вполне естественно и пользуются этим миллионы. Но когда речь заходит про динамический вьюбэг начинаются когнитивные процессы в мозгу, выливающиеся в размазню по кафелю

MonochromatiqueВ хелпере @Html.DropDownListFor нет ни одной перегрузки без входного параметра SelectList,
но его надо выставить в null, если коллекция определена в вьюбаге.

Логично?

У родных хелперов вообще проблем гораздо больше, чем эта. Самая большая проблема — это перегрузки. В данном случае это зло. Сделали бы билдеры в виде fluent chaining, всё было бы логично до немогу. Но что ж поделаешь, сделали так. При проектировании ошибок не избежать. Опять же родными дропдаунами никто пользоваться не заставляет. Всегда можно сотворить свой расово верный и правильный.

MonochromatiqueВозникает вопрос (hVostt, ты ходишь на собеседования?) - возможно ли сломать приложение (работающее), просто передав во ViewBag какое-то значение с произвольным ключом?

DropDownListFor - это нахрен закладка какая-то.

Возможно. Но и через типизированную модель сломать работающее приложение тоже можно. Например, передав в несколько полей типа string по гигу текста. А почему нет?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885979
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatiqueПо поводу передачи списков через вьюбаг - это конечно адский треш - кому вообще в голову взбрело так делать..?

А в чём ты видишь проблему? Я проблемы не вижу. Вьюбэг универсален. Но никто не заставляет, можешь во вью-модель впихнуть. Почему-то вообще никого не парит, когда надо подтягивать данные во всякие дропдауны динамически, делать это с помощью насквозь нетипизированного JavaScript — это выглядит вполне естественно и пользуются этим миллионы. Но когда речь заходит про динамический вьюбэг начинаются когнитивные процессы в мозгу, выливающиеся в размазню по кафелю

MonochromatiqueВ хелпере @Html.DropDownListFor нет ни одной перегрузки без входного параметра SelectList,
но его надо выставить в null, если коллекция определена в вьюбаге.

Логично?

У родных хелперов вообще проблем гораздо больше, чем эта. Самая большая проблема — это перегрузки. В данном случае это зло. Сделали бы билдеры в виде fluent chaining, всё было бы логично до немогу. Но что ж поделаешь, сделали так. При проектировании ошибок не избежать. Опять же родными дропдаунами никто пользоваться не заставляет. Всегда можно сотворить свой расово верный и правильный.

MonochromatiqueВозникает вопрос (hVostt, ты ходишь на собеседования?) - возможно ли сломать приложение (работающее), просто передав во ViewBag какое-то значение с произвольным ключом?

DropDownListFor - это нахрен закладка какая-то.

Возможно. Но и через типизированную модель сломать работающее приложение тоже можно. Например, передав в несколько полей типа string по гигу текста. А почему нет?

Почему ищем во вьюбаге я понять не могу?? Надо искать сразу в контексте по условиям одним-разрабам-известным. По похожему названию.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885984
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueПочему ищем во вьюбаге я понять не могу?? Надо искать сразу в контексте по условиям одним-разрабам-известным. По похожему названию.

По одному и тому же ключу во ViewBag и в Model, хелпер DropDownList предполагает следующее:

в Model хранится значение выбранного элемента из списка

в ViewBag хранится коллекция SelectListItem со всеми элементами для списка

Такая логика.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38885995
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttMonochromatiqueПочему ищем во вьюбаге я понять не могу?? Надо искать сразу в контексте по условиям одним-разрабам-известным. По похожему названию.

По одному и тому же ключу во ViewBag и в Model, хелпер DropDownList предполагает следующее:

в Model хранится значение выбранного элемента из списка

в ViewBag хранится коллекция SelectListItem со всеми элементами для списка

Такая логика.


А мне вот интересно - такое поведение хелпера где-то описано?
Я вот вчера потратил на это времени - ну явно больше, чем стоит тратить на хелпер.

Конечно, если бы сразу стал шерстить форум - получилось бы меньше. Но я полез в инет.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886078
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueА мне вот интересно - такое поведение хелпера где-то описано?
Я вот вчера потратил на это времени - ну явно больше, чем стоит тратить на хелпер.

Конечно, если бы сразу стал шерстить форум - получилось бы меньше. Но я полез в инет.

Я обычно, если мне что-то не ясно, зырю исходники, благо они в открытом доступе.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886081
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЯ вот вчера потратил на это времени - ну явно больше, чем стоит тратить на хелпер.

Да, родные хелперы я не использую, так как мне не нравится, как они устроены (про перегрузки уже говорил).
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886377
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackДело в том что вы прибил гвоздями запросы к БД в методах контроллера - если сегодня вы часть информации получаете из БД а завтра из стороннего сервиса, вы все методы перепишите (причем нескоьлко раз).

Например у вас есть метод insert (GET) и insert(POST):
....

то в пост методе вам придется повторить все ваши выкруты для ViewBag
....

и так для update методов и других. В случае не использования ViewBag просто передадите модель во View(Model) и все.


Всю ветку не осилил пока, но есть вопрос. Являюсь начинающим разработчиком ASP.NET MVC, опытных товарищей из сотрудников нет, поэтому разбираюсь сам. Поддерживаю точку зрения, что распихивать данные для listbox'ов в разные области данных - это не удобно, потому что потом фиг разберешься, откуда они там берутся. Но вот вопрос: в данном случае предлагается гонять пост-запросами справочники от клиента к серверу? Зачем? Или я не правильно понял фразу "В случае не использования ViewBag просто передадите модель во View(Model) и все."?
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886435
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallariseJackДело в том что вы прибил гвоздями запросы к БД в методах контроллера - если сегодня вы часть информации получаете из БД а завтра из стороннего сервиса, вы все методы перепишите (причем нескоьлко раз).

Например у вас есть метод insert (GET) и insert(POST):
....

то в пост методе вам придется повторить все ваши выкруты для ViewBag
....

и так для update методов и других. В случае не использования ViewBag просто передадите модель во View(Model) и все.


Всю ветку не осилил пока, но есть вопрос. Являюсь начинающим разработчиком ASP.NET MVC, опытных товарищей из сотрудников нет, поэтому разбираюсь сам. Поддерживаю точку зрения, что распихивать данные для listbox'ов в разные области данных - это не удобно, потому что потом фиг разберешься, откуда они там берутся. Но вот вопрос: в данном случае предлагается гонять пост-запросами справочники от клиента к серверу? Зачем? Или я не правильно понял фразу "В случае не использования ViewBag просто передадите модель во View(Model) и все."?


Здесь про клиента вообще речь не шла. Только о сервере.
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886439
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueЗдесь про клиента вообще речь не шла. Только о сервере.

eJack предложил после пост-запроса передать в представление модель, уже содержащую данные для listbox'ов, при этом имея ввиду, что эти данные в модели уже будут, в отличие от viewbag ("то в пост методе вам придется повторить все ваши выкруты для ViewBag") Вот мне и стало интересно, каким макаром при использовании модели избежать повторных выкрутасов
...
Рейтинг: 0 / 0
Хочу через ViewBag передать данные во View, но просят привязать источник данных.
    #38886450
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisMonochromatiqueЗдесь про клиента вообще речь не шла. Только о сервере.

eJack предложил после пост-запроса передать в представление модель, уже содержащую данные для listbox'ов, при этом имея ввиду, что эти данные в модели уже будут, в отличие от viewbag ("то в пост методе вам придется повторить все ваши выкруты для ViewBag") Вот мне и стало интересно, каким макаром при использовании модели избежать повторных выкрутасов

Я, видимо пропустил эту часть, так как искал решение своей проблемы.
...
Рейтинг: 0 / 0
80 сообщений из 80, показаны все 4 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Хочу через ViewBag передать данные во View, но просят привязать источник данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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