6. Quelli del model …
Visualizziamo in homepage il numero totale di
post e commenti utilizzando il DbContext
7. Quelli del model …
Visualizziamo in homepage il numero totale di post
e commenti utilizzando il DbContext e LINQ to Entities
int totalPosts = 0, totalComments = 0;
using (var db = new BlogContext())
{
totalComments = db.Comments.Count();
totalPosts = (from p in db.Posts
where p.IsPublished
select p).Count();
}
18. Questa sintassi in esecuzione viene
interpretata da un View Engine, che
ha il compito di tradurre il codice
sottostante nell’html da inviare al
browser.
19. Questa sintassi in esecuzione viene
interpretata da un View Engine, che
ha il compito di tradurre il codice
sottostante nell’html da inviare al
browser. Il View Engine in questione
si chiama Razor
21. Mostriamo in home gli ultimi post:
1 var posts = ( from p in db.Posts
where p.IsPublished
orderby p.CreatedDate descending
select p ).Skip(0)
.Take(3)
.ToList<Post>();
22. Mostriamo in home gli ultimi post:
var posts = ( from p in db.Posts
where p.IsPublished
orderby p.CreatedDate descending
select p ).Skip(0)
.Take(3)
.ToList<Post>();
2 ViewBag.Posts = posts;
23. Mostriamo in home gli ultimi post:
var posts = ( from p in db.Posts
where p.IsPublished
orderby p.CreatedDate descending
select p ).Skip(0)
.Take(3)
.ToList<Post>();
ViewBag.Posts = posts;
3 @foreach (var item in (IList<Post>)ViewBag.Posts)
{
<h2>@item.Title</h2>
<h3>Pubblicato il @item.PublishedDate</h3>
<p>@item.Body</p>
<p class="tags">@item.Tags</p>
}
24. Il ViewBag è molto comodo, ma ci
costringe a eseguire sempre un cast
prima di utilizzarlo se la proprietà è un
oggetto complesso
@foreach (var item in (IList<Post>)ViewBag.Posts)
{
<h2>@item.Title</h2>
<h3>Pubblicato il @item.PublishedDate</h3>
<p>@item.Body</p>
<p class="tags">@item.Tags</p>
}
38. Layout
Come faccio a fare in modo che la
vista utilizzi un determinato layout?
@{
ViewBag.Title = "Home Page";
Layout = "~/Views/Shared/_Layout.cshtml";
}
40. Layout
Ma lo devo fare per ogni vista?!
NO, basta utilizzare il ViewStart …
41. _ViewStart
E’ un file che viene inserito nella
cartella principale e permette di far
applicare delle regole a tutte le
viste presenti in quella cartella e in
tutte le sue sottocartelle
42. PartialView
Se le informazioni da visualizzare
sono le stesse (o quasi) per molte
pagine, allora possiamo creare una
“vista parziale” che le contenga
45. RenderAction
1 @{ Html.RenderAction("List", "Category"); }
All’interno
di una vista
46. RenderAction
Come action di
un controller
2 public ActionResult List()
{
IList<Category> cat_s = new List<Category>();
using (var db = new BlogContext())
{
cat_s = (from c in db.Categories.Include("Posts")
select c).ToList<Category>();
}
return PartialView(categories);
}
48. Come esercizio:
Una pagina che visualizzi tutti i
post di una categoria
Una pagina che mostri i dati di un
post compresi i commenti
Paginare l’home page per
mostrare i post meno recenti
50. Credits
Le immagini contenute in questa presentazione
hanno licenza Creative Commons
Slide 10: http://www.flickr.com/photos/jeffwerner/2677245039/in/photostream/
Slide 13: http://www.flickr.com/photos/philthomas/3345060816/in/photostream/
51. Thank You MANUEL SCAPOLAN
website: www.manuelscapolan.it
twitter: manuelscapolan
e-mail: info@manuelscapolan.it