ASP NET – RAZOR Templates – MVC – C#

Publicado: 27 de maio de 2015 em C#

O Framework ASP.NET MVC possibilita que você economize muito tempo no desenvolvimento de suas aplicações simplesmente utilizando os templates do Razor. O Razor possui uma gama de templates que permite que você crie de um modo simples todas as operações comuns no acesso a dados de sua aplicação conhecidas popularmente como CRUD. Utilizando seus próprios modelos, o Razor cria vários templates, como os de lista, onde você pode visualizar todos os dados de uma maneira geral, como também já lhe proporciona todos os links para as Views onde você pode utilizar os templates também para criar, editar, apagar e mostrar detalhes de um registro em especial.

Usando os templates do Razor

1 – Crie uma aplicação ASP.NET MVC. Crie um novo controlador com as ações de leitura e escrita chamado CursosController. Note que os dados ainda não são acessados do banco de dados e sim estão escritos estaticamente na aplicação apenas para este exemplo:

MVC - Controller

MVC – Controller

2 – Crie um novo modelo chamado CursosModelo:

MVC - Modelo

MVC – Modelo

3 – Adicione uma nova View para o controlador chamada Index e no seu assistente de criação, preencha o template como LIST e adicione o seu modelo. A View irá criar todo o código básico e você pode customiza-lo como desejar:

MVC - View

MVC – View

4 – Use os códigos abaixo pra completar o seu código gerado automaticamente e rode sua aplicação. Você deverá receber o seguinte resultado:

MVC - Razor Template

MVC – Razor Template

Exemplo:

Neste exemplo utilizamos o template de lista da visão do Razor para exibir dados na página da aplicação. Você pode ver que todos os links são funcionais entretanto ainda não criamos uma visão para cada um deles.

C#

Modelo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class CursosModelo
    {
        // Propriedades
        public int Id { get; set; }
        public string Curso { get; set; }
        public string Linguagem { get; set; }
        public string Dia { get; set; }
        public string hora { get; set; }

    }
}

Visão

@model IEnumerable<WebApplication1.Models.CursosModelo>

@{
    ViewBag.Title = "Desenvolvimento Aberto - Cursos";
}

<h1>Desenvolvimento Aberto</h1>
<h2>Cursos</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Curso)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Linguagem)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Dia)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.hora)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Curso)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Linguagem)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Dia)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.hora)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>

Controlador

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class CursosController : Controller
    {
        // GET: Cursos
        public ActionResult Index()
        {
            var modelo =
                from r in _cursos
                orderby r.Id
                select r;

            return View(modelo);
        }

        // GET: Cursos/Details/5
        public ActionResult Details(int id)
        {
            return View();
        }

        // GET: Cursos/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: Cursos/Create
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        // GET: Cursos/Edit/5
        public ActionResult Edit(int id)
        {
            return View();
        }

        // POST: Cursos/Edit/5
        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        // GET: Cursos/Delete/5
        public ActionResult Delete(int id)
        {
            return View();
        }

        // POST: Cursos/Delete/5
        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        // Lista estatica enquanto ainda não utilizamos banco de dados
        // Lista alimenta os dados para nossa pagina

        static List<CursosModelo> _cursos = new List<CursosModelo>
        {
            new CursosModelo {
                Id =1,
                Curso = "ASP.NET MVC",
                Linguagem = "C#",
                Dia = "Segunda",
                hora = "8:00"
            },

            new CursosModelo {
                Id =2,
                Curso = "Web Dynpro MVC",
                Linguagem = "ABAP",
                Dia = "Terça",
                hora = "8:00"
            },

            new CursosModelo {
                Id =3,
                Curso = "Ruby on Rail",
                Linguagem = "Ruby",
                Dia = "Quarta",
                hora = "8:00"
            },

            new CursosModelo {
                Id =4,
                Curso = "Django",
                Linguagem = "Python",
                Dia = "Quinta",
                hora = "8:00"
            },

            new CursosModelo {
                Id =1,
                Curso = "Java EE MVC",
                Linguagem = "Java",
                Dia = "Sexta",
                hora = "8:00"
            }
        };

    }
}

 

Publicidade
comentários
  1. Mr. Pinto disse:

    O meu vs2013 update 5 não me dar estas opções de templates, também não me dar uma opção direta para criar templates quando clico com o botão direito sobre a pasta das controllers, o que devo fazer???

    • Olá Flavio,

      Os templates não ficam nos controladores e sim nas visões, para escolher o templete vc precisa criar uma View (Item 3 do post)para o controller criado anteriormente.

      O VS2013 possui os mesmos recursos, entretanto alguns possuem um conhecido bug que geram um erro quando vc tenta criar uma View ou um Controller usando os Wizards através do botão direito do mouse.

      Espero ter ajudado,

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s