Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Globalization;
using PhotoSharingApplication.Models;
namespace PhotoSharingApplication.Controllers
{
[ValueReporter]
public class PhotoController : Controller
{
private PhotoSharingContext context = new PhotoSharingContext();
public ActionResult Index()
{
return View("Index", context.Photos.ToList());
}
public ActionResult Display(int id)
{
Photo photo = context.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View("Display", photo);
}
public ActionResult Create()
{
Photo newPhoto = new Photo();
newPhoto.CreatedDate = DateTime.Today;
return View("Create", newPhoto);
}
[HttpPost]
public ActionResult Create(Photo photo, HttpPostedFileBase image)
{
photo.CreatedDate = DateTime.Today;
if (!ModelState.IsValid)
{
return View("Create", photo);
}
else
{
if (image != null)
{
photo.ImageMimeType =
image.ContentType;
photo.PhotoFile = new
byte[image.ContentLength];
image.InputStream.Read(
photo.PhotoFile, 0,
image.ContentLength);
}
}
context.Photos.Add(photo);
context.SaveChanges();
return RedirectToAction("Index");
}
public ActionResult Delete(int id)
{
Photo photo = context.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View("Delete", photo);
}
[HttpPost]
[ActionName("Delete")]
public ActionResult DeleteConfirmed
(int id)
{
Photo photo = context.Photos.Find(id);
context.Photos.Remove(photo);
context.SaveChanges();
return RedirectToAction("Index");
}
public FileContentResult GetImage(int id)
{
Photo photo = context.Photos.Find(id);
if (photo != null)
{
return File(photo.PhotoFile,
photo.ImageMimeType);
}
else
{
return null;
}
}
}
}
Adding filter
namespace PhotoSharingApplication.Controllers
{
public class ValueReporter : ActionFilterAttribute
{
private void logValues(RouteData routeData)
{
var controller = routeData.Values["controller"];
var action = routeData.Values["action"];
string message = string.Format(
"Controller: {0}; Action: {1}",
controller, action);
Debug.WriteLine(message, "Action Values");
foreach (var item in routeData.Values)
{
Debug.WriteLine(">> Key: {0}; Value: {1}", item.Key, item.Value);
}
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
logValues(filterContext.RouteData);
}
}
}
Creating a quick View
@model IEnumerable<PhotoSharingApplication.Models.Photo>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.ImageMimeType)
</th>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
<th>
@Html.DisplayNameFor(model => model.CreatedDate)
</th>
<th>
@Html.DisplayNameFor(model => model.UserName)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ImageMimeType)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatedDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.PhotoID }) |
@Html.ActionLink("Display", "Display", new { id = item.PhotoID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.PhotoID })
</td>
</tr>
}
</table>
Defining Child Action
- _PhotoGallery is a child of Index
public ActionResult Index()
{
return View("Index");
}
[ChildActionOnly]
public ActionResult _PhotoGallery(int number = 0)
{
List<Photo> photos;
if (number == 0)
{
photos = context.Photos.ToList();
}
else
{
photos = (
from p in context.Photos
orderby p.CreatedDate descending
select p).Take(number).ToList();
}
return PartialView("_PhotoGallery", photos);
}
Comentarios
Publicar un comentario