Loading...
VGeorgiev avatar VGeorgiev 1384 Точки

[Домашни] ASP.NET MVC (дискусия)

Здравейте, колеги

Правя тази тема в която да обсъждаме всички домашни от курса. Как ви се струват? Сложни, прости? Като обем как са? Предложения имате ли?

Можете също да споделяте github repositories, за да видя какво правите, ако мога да допълвам домашни или ако съм изпуснал нещо да добавям в следващите домашни.

Поздрави,
Владо

Тагове:
3
C# MVC Frameworks - ASP.NET 22/05/2015 11:25:50
borislavml avatar borislavml 368 Точки

Първо поздравления за идеята домашното в този курс да бъде цялостен проект.Много добра идея, така поне на мен ми е по-интересно и увлекателно, и се старая повече.Ще си призная, че не се движа по "плана" от дамашното и след второто дори не съм предавал(незнам дали изобщо вече е възможно да предам с това ограничение от 2MB, още първото без всички obj и bin папки компресирано беше 1.7MB ) Поглеждам какви са задачите във всяко ново домашно, но ако по моя си план не съм стигнал до тази част на проекта или, ако смятам изобщо да не имплементирам такава функционалност го подминавам.Според мен часта с AJAX зареждане на partial view-та беше много слабо засегната и на лекцията за AJAX и на workshop-a.Надявам се на лаб-а да покажете повече неща.Поне при мен в момента над 50% от екшъните в контролерите  приемат ajax заявки, връщат паршали, които правят нови ajax и става голямото мазало.Опитвам се да си преизползвам кода максимално, но когато това се получи имам чувството, че само аз мога да разбера какво съм напсал.Не съм работил с друг фреймуорк до сега, но с времето тази еко-система ASP.NET-MVC започва да ми изглежда все по-сложна и тромава.Уж да разделим нещата, което в слуачая с логика, вюта и модели се получава, но като искам да си правя страницата динамична става супер сложно, и си мисля дали не е по-добре да си имам едно WEB API за динамичното съдържание  и да си го ползвам на клиента с jQuery.Така хем става по разделено и чисто, хем не хвърчат по мрежата такива огромни парчета html и js. 

Незнам, може би и аз не правя нещата както трябва, и може би навсякъде с всички framewor-ци където си пишеш бек-енда и фрон-енда на едно е така.Просто споделям впечатления. Като деплойна ще се рабере, бавно ли е, бързо ли е и т.н smiley

2
22/05/2015 14:10:02
VGeorgiev avatar VGeorgiev 1384 Точки

Относно мудното спрявяне с динамичността на страницата и работата с AJAX, имаш право. Макар и лесно да се правят AJAX заявки и лесно да зареждаме нещата с много малко код, при сложни работи става малко кофти.

Това е и причината да има две различни технологии в ASP.NET stack-a: MVC и Web API. Server-side rendering vs client-side. И двете си имат предимства и недостатъци.

Тук вече кое да използваш е решение според проекта и според бизнес нуждите. Също така играе роля и екипа, който ще разработва проекта какви умения притежава и тн и тн... 

Поздрави,
Владо

 

0
VGeorgiev avatar VGeorgiev 1384 Точки

Благодаря за поздравите.

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

Другото е, че със Светлин не можахме да се синхронизираме напълно с домашните и всички да са по проекта. Макар и да си правите проекта сами, погледнете задачите от домашните, могат да ви дадат идеи за нещо, което може да сте пропуснали. 

Извинявай, че говоря на вие. Имам предвид всички които четат коментара :D

1
22/05/2015 14:27:10
petrovaliev95 avatar petrovaliev95 358 Точки

Влади по въпроса с предаването на домашни след всяко надграждане е досадно да. Ще е добре ако има едно домашно за предаване накрая на курса, и то е целия проект като завършен.

8
Matrix avatar Matrix 1092 Точки

Screenscast видеа от SignalR и ASP.NET Web Security лекциите ?

0
Matrix avatar Matrix 1092 Точки

"Малко" е меко казано. Anyway. Мерси все пак.

0
VGeorgiev avatar VGeorgiev 1384 Точки

Направих всичко възможно да имаме screencast. И при двамата се счупиха видеата. При Мартин мисля, че нямаше звук, а при Ради, при едната част от видеото Camtasia-та му се счупи и не можахме да го възстановим.

Не е перфектно видеото от камерата, но го погледнах и върши работа.

0
Ivaylo.Il avatar Ivaylo.Il 226 Точки

Здравейте

Имам нужда от малко помощ при прехвърлянето на няколко модела в 1 View. При проблем 11 от домашното имаме да направим Homepage за логнат потребител и трябва да има форма за създаване на нов Tweet, която ползва TweetController.

Та за да визуализирам Tweets от последваните ми потребители във Хоум-а на логнатия потребител използвам PagedList библиотеката (заради Pagination) където подавам Модела за визуализиране на Tweets. Опитвам се да направя формата като partialView където използвам модела за въвеждане на Tweets. 

Опитах да ползвам 1 и същ модел но заради тази библиотека зa Pagination, когато не ползвам Foreach на Model не мога да достъпя до пропъртитата на модела (съответно не мога да им подам стойност във формата), а виждам само пропъртита на типа PagedList.

Кодът е достъпен ето тук: https://github.com/IvayloIL/SoftwareUniversity/tree/master/ASP%20NET%20MVC/Twitter%20Web%20application

П.С.: нормалната практира за моделите е да се правят 1 главен модел за базата, 1 за визуализация при ГЕТ, и още един когато вкарваме в базата. Правилно ли го разбирам?

П.С.С: Бих се радвал да се организира и 1 допълнително упражнение за ASP. NET, ако Влади е свободен, Сигурен съм, че ще има желаещи. 

 

1
31/05/2015 15:18:24
petrovaliev95 avatar petrovaliev95 358 Точки

Колега какво те притеснява да направиш 'Partial view' с формичка без указан модел ?

1
01/06/2015 10:18:34
Ivaylo.Il avatar Ivaylo.Il 226 Точки

ами не съм се сещал да пробвам така, но няма ли да имам проблеми при вкарване в базата като е така без модел данни ?

0
petrovaliev95 avatar petrovaliev95 358 Точки

Ти можеш да си направиш 'action' в контролера който приема модела който искаш и той ще ти bind-не по имената на полетата и имената на пропъртитата. От там нататък можеш да си правиш каквото ти хрумне. Принципно трябва да редиректнеш след събмитването на формата за да не става мазало. Ако искаш погледни аз как съм го направил: Цък.

1
01/06/2015 10:50:38
ttitto avatar ttitto 1153 Точки

Когато се ползва междинен слой за бизнес логиката (services) между контролера и базата къде е правилно да се прави конвертирането между модела и вюмодела - в контролера или в сървиса?

0
aivian avatar aivian 51 Точки

Как мога да филтрирам tweet - овете да бъдат само тези, на хората, които потребителят е последвал. Опитах много начини и мисля, че така би трябвало да работи:

tweets = this.Data.Tweets.All()
                    .Where(t => user.Following.Contains(t.User))
                    .OrderByDescending(t => t.CreatedOn)                    
                    .Select(TweetViewModel.Create)
                    .Skip((page - 1) * 10)
                    .Take(10);

Но постоянно foreach - а във view - то ми гърми "Unable to create a constant value of type 'Twitter.Models.User'. Only primitive types or enumeration types are supported in this context." и не разбирам къде е проблема. А иначе без where клаузата си работи правилно.

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

Проблема според мен е в това, че заявката ти не може да се преведе до sql - User-а в Where клаузата е причината. Аз съм го направил като съм извадил само id-тата на юзърите, които юзъра следва и проверявам id-то на собственика на туита дали се съдържа в колекцията с id-та.

Нещо такова:

var followingUsersIds = userInDb.FollowingUsers
                .Select(u => u.Id)
                .ToList();

var tweets = this.Data.Tweets.All()
                .Where(t => followingUsersIds.Contains(t.OwnerId))
                .OrderByDescending(t => t.PublishedOn)
                .Select(TweetViewModel.Create)
                .ToPagedList(page ?? 1, PageSize);

 

2
13/10/2015 18:10:21
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.