Skip to main content

Posts

Showing posts with the label view

MVC - What a view should never contain( part 2)

Part 1 Ieri am promis ca revin cu un post despre ce nu ar trebuii sa contina un view. Pornim de la o clasa PersonModel care are urmatoarea definitie: public class PersonModel { public string Name { get; set; } public int Age { get; set; } public string Address { get; set; } } Pentru acest model avem urmatorul view: @model PersonModel @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Person</title> </head> <body> <fieldset> <legend>PersonModel</legend> <div class="display-label">Name</div> <div class="display-field"> @Html.DisplayFor(model => model.Name) </div> <div class="display-label">Age</div> <div class="display-field"> @Html.DisplayFor(model => model.Age) </div> <div class="display-label"...

MVC - What a view should never contain( part 1)

Part 2 Suntem intr-o aplicatie MVC. Un model poate sa fie folosit de 1 sau mai multe viewuri. Intrebarea de unde a pornit totul este Ce ar trebuii sa contina un view? Daca ne luam dupa carte: Un View trebuie sa contina codul prin intermediul caruia se genereaza interfara grafica asteptata. Viewul se ocupa cu partea de render la date pentru a afisa modelul corespunzator. In acest caz ce este un Model? Raspunsul scurt si sec pe care il primesc mereu este: o clasa care contine datele ce trebuie afisate in view. Citisem anul trecut ca un model poate sa fie reprezentat de un web service, de un repository sau de catre un alt bussines layer. Aceasta afirmatie este falsa. Da sursa datelor poate sa fie un web-service, un repository sau un bussines layer, dar datele care o sa fie afisate tot ca o colectie de la 1 la n de de obiecte pe care le primim. Indifierent ca este o colectie de stringuri, o clasa, sau un singur string. Aceste date pot sa fie modelate ca si o clasa. Daca ne intoarcem la pri...

MVC 3 - Custom view load based on the source of the request

Pornim de la următoarea problema: Se da o aplicație ASP MVC 3. Se dorește sa încarce view-uri custom pentru fiecare tip de device care o accesează. De exemplu în cazul în care request-ul vine de la un iPhone sau un Windows Phone 7 atunci view-urile care se încarcă o sa fie diferite. MVC suporta deja crearea unei versiuni de view pentru mobile device, dar acest lucru nu o sa ne fie de ajuns. In funcție de rezoluție sau de brower o sa dorim sa încărcam view-uri total diferite. Informațiile despre ce tip de device accesează resursa le putem găsii in user-agent. Proprietatea user agent-ul se poate găsii în următoarea locație HttpContext.Request.UserAgent Aceasta valoare o sa fie de tip string, unde este necesar sa cautam manual valoarea pe noi o cautam. Pentru IPhone user agent-ul o sa aibe valoarea: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3 Iar un request de la un Windows Phone 7 o sa aibe următoarea valoare:...