Професионална програма
Loading...
+ Нов въпрос
a.angelov avatar a.angelov 1317 Точки

Как е най-удачно да се подаде повече от 1 модел във view в ASP.NET MVC?

Как е най-удачно и правилно да се подаде повече от 1 модел към view в ASP.NET MVC?

- чрез view model клас, който има като пропъртита моделите, които ни трябват във view-то;

- чрез ViewBag / ViewData;

- чрез Tuple;

- друго.

Пример от последното домашно - в едно view трябва да листнем tweet-ове и същевременно да имаме форма за постване на тов tweet, която се байндва към модел за нов tweet. Аз съм го направил с Tuple, но ми се иска да чуя мнения, кое се препоръчва да се ползва.

Тагове:
0
C# MVC Frameworks - ASP.NET
petrovaliev95 avatar petrovaliev95 358 Точки

А защо е задължително да имаш и 2-рия байндинг модел. Може да го направиш с чист HTML.

0
a.angelov avatar a.angelov 1317 Точки

Не е ли ползването на моделите правилният начин спрямо чистия html?

В модела нали има валидация на пропъртитата, лесно се показват грешно попълнени данни в реално време в html-а преди изпращане на заявка, лесно се обработва после в контролера... Нали това е идеята на байндинг моделите.

0
petrovaliev95 avatar petrovaliev95 358 Точки

За валидацията си прав, че става лесно, но никой не е казал, че неможеш да си я напишеш сам на чист JavaScript. Колкото до обработката в контролера не ти пречи там да имаш байндинг модел.

0
petrovaliev95 avatar petrovaliev95 358 Точки

Иначе още едно решение което ми хрумва е да си направиш един общ модел които wrapp-ва другите 2 или повече и си работиш с тях във view-то, но зависи дали си струва това.

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

При търсене в интернет като цяло ми излезнаха сходни статии с възможните решение на въпроса ти. Повечето са с автори индийци, така че не се знае колко адекватни са. 

LINK

1
a.angelov avatar a.angelov 1317 Точки

И аз на тях попаднах и затова реших да питам тук... :) Дано се включи и някой от лекторите по въпроса...

0
ttitto avatar ttitto 1154 Точки

Не съм гледал още домашните от курса, но ми се струва, че байндването на модела за новия tweet трябва да е в PartialView, което се зарежда с AJAX (според това,което си обяснил). Тоест въобще не ти трябват два модела в едно вю.

Иначе от трите начина аз бих избрах обединен BindingModel. ViewBag i ViewData по принцип не се препоръчва да се ползват.

1
quickben avatar quickben 974 Точки

За ViewData съм чел на много места, че е перфектно да се използва само когато директно редиректваш към даден action и за нищо друго :) 

0
quickben avatar quickben 974 Точки

Според това което съм чел отговора е зависи :)

http://www.dotnet-stuff.com/tutorials/aspnet-mvc/understanding-best-way-to-use-multiple-models-in-asp-net-mvc

Тук поне пише предимства и недостатъци, че да можеш да прецениш за твойте нужди.

Аз засега клоня към partial view-та като начин да подавам два обекта на едно view :) (то реално е view във view и реално се избягва този "проблем", а не се решава)

http://www.pluralsight.com/courses/aspdotnet-bestpractices-models

Този курс в pluralsight е доста добър.

4
11/10/2015 19:13:47
ibakyrdjiev avatar ibakyrdjiev 172 Точки

Правиш един ViewModel class с всичките неща , които ти трябват и ги пръскаш по partial views.

ViewBag e dynamic и лесно може да те прецака за това не го ползвай

2
11/10/2015 20:31:06