VIDEO: Simplificar vistas ASP.NET MVC utilizando helpers personalizados

En las vistas ASP.NET MVC es bastante habitual encontrar código duplicado o demasiado complejo que dificulta la legibilidad y mantenibilidad de las mismas. Y como desarrolladores, sabemos que esto es una bomba de relojería: antes o después tendremos que modificarlas y es en ese momento cuando valoraremos especialmente encontrarnos con un código conciso, limpio, y bien estructurado.

Para ayudarnos en ello, el framework MVC ofrece un mecanismo denominado helpers (pertenecientes a la sintaxis Razor), cuya misión principal es encapsular lógica de generación de código de vista, o, en otras palabras, introducir HTML por nosotros en el interior de la página. Ejemplos conocidos son los helpers para crear hiperenlaces o editores de campos de formulario como Html.ActionLink() o Html.EditorFor(), proporcionados de serie por ASP.NET MVC. Estos son helpers de alcance global y pueden ser usados en todas las vistas de la aplicación.

{});

Pero, adicionalmente, el framework ofrece la posibilidad de crear helpers específicos para una vista concreta, que podemos utilizar para conseguir un código mucho más simple y mantenible en el interior de la misma, como veremos en el siguiente vídeo.

via: http://www.campusmvp.es/recursos/post/VIDEO-Simplificar-vistas-ASPNET-MVC-utilizando-helpers-personalizados.aspx

VIDEO: Activar la compilación de vistas en ASP.NET MVC

Como sabemos, en proyectos ASP.NET MVC las vistas Razor/ASPX son compiladas en tiempo de ejecución, cuando se produce el primer acceso a las mismas.

Aunque esto ofrece algunas ventajas, como la reducción del tiempo de compilación o la posibilidad de modificarlas “en caliente”, es decir, durante la ejecución de la aplicación, introduce también un inconveniente importante: los errores que hayamos cometido en su implementación no serán detectados hasta que la página sea visualizada, hecho que, en el peor de los casos, se producirá ya en producción.

Para evitar este tipo de situaciones, ASP.NET MVC incluye la posibilidad de llevar a tiempo de compilación la comprobación de errores en vistas. El problema es que la forma de conseguirlo es algo extraña, pues no está soportado directamente por el entorno de Visual Studio y hay que retocar a mano el archivo del proyecto.

En cualquier caso no es nada complicado, en el siguiente vídeo veremos cómo hacerlo:

De esta forma tendremos la seguridad de que nuestras vistas compilan perfectamente, sólo a cambio de un poco más de tiempo en el momento de construir la solución.

Pero ojo, recordad que se trata simplemente de una comprobación de errores para facilitar la depuración, y en ningún caso sustituye a la compilación que el proceso de ASP.NET realizará una vez despleguemos el proyecto.

via: http://www.campusmvp.es/recursos/post/Activar-la-compilacion-de-vistas-en-ASPNET-MVC.aspx

ViewData VS ViewBag Vs TempData in MVC

Introduction

ViewData and ViewBag are used for the same purpose to transfer data from controller to view. Both life lies only in current request. ViewData is nothing but dictionary of object and it is accessible by string as key. ViewData is property of controller that exposes an instance of the ViewDataDictionary class. ViewBag is very similar to ViewData. ViewBag is a dynamic property (dynamic keyword which is introduced in .net framework 4.0). ViewBag is able to set and get value dynamically and able to add any number of additional fields without converts it to strongly typed. ViewBag is just a wrapper around the ViewData.

ViewData Example

//Controller Code

public ActionResult Index()

{

      List<string> Student = new List<string>();

      Student.Add(“Jignesh”);

      Student.Add(“Tejas”);

      Student.Add(“Rakesh”);

 

      ViewData[“Student”] = Student;

      return View();

}

//page code

<ul>

    <% foreach (var student in ViewData[“Student”] as List<string>)

        { %>

    <li><%: student%></li>

    <% } %>

</ul>

ViewBag Example

 

//Controller Code

public ActionResult Index()

{

      List<string> Student = new List<string>();

      Student.Add(“Jignesh”);

      Student.Add(“Tejas”);

      Student.Add(“Rakesh”);

 

      ViewBag.Student = Student;

      return View();

//page code

<ul>

    <% foreach (var student in ViewBag.Student)

        { %>

    <li><%: student%></li>

    <% } %>

</ul>

TempData is a dictionary which is derived from TempDataDictionary class. TempData is stored data just like live session for short time. TempData Keep data for the time of HTTP Request it mean that it hold data between two consecutive requests. TempData help us to transfer data between controllers or between actions. TempData internally use Session variables. Note that TempData is only work during the current and subsequent request. It is generally used to store one time message. With the help of TempData.Keep() method we can keep value in TempData object after request completion.

TempData Example

//Controller Code

public ActionResult Index()

{

    List<string> Student = new List<string>();

    Student.Add(“Jignesh”);

    Student.Add(“Tejas”);

    Student.Add(“Rakesh”);

 

    TempData[“Student”] = Student;

    return View();

}

//page code

<ul>

    <% foreach (var student in TempData[“Student”] as List<string>)

        { %>

    <li><%: student%></li>

    <% } %>

</ul>


ViewData VS ViewBag VS TempData

ViewData ViewBag TempData
It is Key-Value Dictionary collection It is a type object It is Key-Value Dictionary collection
ViewData is a dictionary object and it is property of ControllerBase class ViewBag is Dynamic property of ControllerBase class. TempData is a dictionary object and it is property of controllerBase class.
ViewData is Faster than ViewBag ViewBag is slower than ViewData NA
ViewData is introduced in MVC 1.0 and available in MVC 1.0 and above ViewBag is introduced in MVC 3.0 and available in MVC 3.0 and above TempData is also introduced in MVC1.0 and available in MVC 1.0 and above.
ViewData  is also work with .net framework 3.5 and above ViewBag  is only  work with .net framework 4.0 and above TempData  is also work with .net framework 3.5 and above
Type Conversion code is required while enumerating In depth, ViewBag is used dynamic, so there is no need to type conversion while enumerating. Type Conversion code is required while enumerating
It value become null if redirection is occurred. Same as ViewData TempData is used to pass data between two consecutive requests.
It lies only during the current request. Same as ViewData TempData is only work during the current and subsequent request


Conclusion

We have three options ViewData, ViewBag and TeampData for passing data from controller to view and in next request. ViewData and ViewBag are almost similar and it helps us to transfer the data from controller to view whereas TempData is also work during the current and subsequent request.

via: http://www.c-sharpcorner.com/Blogs/12427/viewdata-vs-viewbag-vs-tempdata-in-mvc.aspx