On parle Windows, C#, Apple, Android, Js, …

Exemple de projet MVC (mis à jour)

J’ai mis à jour le projet MVC échantillon que j’ai écrit pour l’utilisation d’ASP.NET MVC 3 et le moteur d’affichage Razor.

Un changement mineur, c’est que je n’utilise plus le FluentValidationModelValidatorProvider mais le standard. Donc j’ai décorer le modèle d’affichage avec les annotations de données nécessaires :

 

[Validator(typeof(UserViewModelValidator))]
public class UserViewModel
{
    public int Id { get; set; }

    [DisplayName("First name *")]
    public string FirstName { get; set; }

    [DisplayName("Last name *")]
    public string LastName { get; set; }

    public int? Age { get; set; }
}

Et le validateur devient :

 

public class UserViewModelValidator : AbstractValidator
{
    public UserViewModelValidator()
    {
        RuleFor(x => x.FirstName)
            .NotEmpty()
            .WithMessage("First name is required");

        RuleFor(x => x.LastName)
            .NotEmpty()
            .WithMessage("Last name is required");
    }
}

Et Voici les vues correspondantes à l’aide de rasoir :

 

Index.cshtml

@model IEnumerable

@{
    ViewBag.Title = "Index";
}

Index
@(Html
    .Grid(Model)
    .Columns(column => {
        column.Custom(model => Html.Partial("_TableLinks", model));
        column.For(model => model.FirstName);
        column.For(model => model.LastName);
        column.For(model => model.Age);
    })
)


    @(Html.ActionLink(c => c.New(), "Create New"))

 

_TableLinks.cshtml

@model SampleMvc.Web.Models.UserViewModel

@(Html.ActionLink(c => c.Edit(Model.Id), "Edit")) |
@(Html.ActionLink(c => c.Show(Model.Id), "Details")) |
@using (Html.BeginForm(c => c.Destroy(Model.Id))) 
{
    @Html.HttpMethodOverride(HttpVerbs.Delete)
    
}

 

Edit.cshtml

@model SampleMvc.Web.Models.UserViewModel
@{
    ViewBag.Title = "Edit";
}

Edit
@using (Html.BeginForm(c => c.Update(null)))
{
    @Html.ValidationSummary(true)
    @Html.HttpMethodOverride(HttpVerbs.Put)
    @Html.HiddenFor(model => model.Id)
    @Html.EditorForModel()
    
        
    
}

    @(Html.ActionLink(c => c.Index(), "Back to List"))

 

New.cshtml

@model SampleMvc.Web.Models.UserViewModel

@{
    ViewBag.Title = "New";
}

New
@using (Html.BeginForm(c => c.Create(null))) 
{
    @Html.ValidationSummary(true)
    @Html.EditorForModel()
    
        
    
}

    @(Html.ActionLink(c => c.Index(), "Back to List"))

 

Show.cshtml

@model SampleMvc.Web.Models.UserViewModel
           
@{
    ViewBag.Title = "Show";
}

Show

@Html.DisplayForModel()

    @(Html.ActionLink(c => c.Edit(Model.Id), "Edit")) |
    @(Html.ActionLink(c => c.Index(), "Back to List"))

 

Modèle de l’éditeur UserViewModel.cshtml

@model SampleMvc.Web.Models.UserViewModel


    Fields
            
    
        @Html.LabelFor(model => model.FirstName)
    
    
        @Html.EditorFor(model => model.FirstName)
        @Html.ValidationMessageFor(model => model.FirstName)
    
            
    
        @Html.LabelFor(model => model.LastName)
    
    
        @Html.EditorFor(model => model.LastName)
        @Html.ValidationMessageFor(model => model.LastName)
    
            
    
        @Html.LabelFor(model => model.Age)
    
    
        @Html.EditorFor(model => model.Age)
        @Html.ValidationMessageFor(model => model.Age)
    

Modèle d’affichage UserViewModel.cshtml

@model SampleMvc.Web.Models.UserViewModel


    Fields
        
    Id
    @Html.DisplayFor(x => x.Id)
        
    FirstName
    @Html.DisplayFor(x => x.FirstName)
        
    LastName
    @Html.DisplayFor(x => x.LastName)
        
    Age
    @Html.DisplayFor(x => x.Age)

Le code source est disponible sur github.

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.