Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Variable not found

Sintaxis Razor con VB.NET

Mayo 31st, 2011 - [Enlace local]

Desde siempre, C# ha sido el lenguaje por excelencia del framework ASP.NET MVC, y por esta razón es bastante difícil encontrar en la web ejemplos escritos en otros lenguajes, como el popular Visual Basic .NET.



En el caso concreto de la capa Vista, prácticamente nadie escribe ejemplos utilizando Razor y VB.NET, por lo que los desarrolladores que siguen optando por este lenguage para trabajar sobre ASP.NET MVC (e incluso WebPages) lo tienen más complicado para entender y utilizar código existente. Además, a diferencia de lo que podría pensarse, la codificación no es exactamente igual en ambos lenguajes, y a veces no es fácilmente inferible, lo cual añade además un poco de dificultad al usar VB.



En este post vamos a mostrar una tabla de equivalencias entre C# y VB.NET a la hora de codificar distintas construcciones que utilizamos frecuentemente al crear vistas con Razor.

Archivos de vistas o páginas Razor

C#VB.NET
nombrearchivo.cshtmlnombrearchivo.vbhtml

Definición del tipo de datos del Modelo

C#VB.NET
@model Persona@ModelType Persona

Importación de espacios de nombres

C#VB.NET
@using MyApp.Models@Imports MyApp.Models

Definición de clase base de la vista

C#VB.NET
@inherits ClaseBase@Inherits ClaseBase

Bloque de código

C#VB.NET
@{

   // Código C#

}
@Code

   ' Código VB.NET

End Code

Instrucciones de bloque (*)

C#VB.NET
@if(a > b) {

   // Hacer algo

}
@If a > b Then

   ' Hacer algo

End If
(*) aplicable para instrucciones como if, while, for, foreach, using, switch, etc.

Salida de expresión

C#VB.NET
Hola, @Model.NombreHola, @Model.Nombre

Mezcla de código y marcado

C#VB.NET
@if(a > b) { 

   <p>A es mayor que B</p>

}
@If a > b Then

   @<p>A es mayor que B</p>

End If
@if(a > b) {

   @: una línea de texto o HTML

}
@If a > b Then

   @: una línea de texto o HTML

End If
@if(a > b) {

   <text>

      Aquí va texto o HTML

   </text>

}
@If a > b Then

   @<text>

      Aquí va texto o HTML

   </text>

End If

Definición de secciones de un Layout

C#VB.NET
@section Encabezado {

   <h3>Este es el encabezado</h3>

} 
@Section Encabezado

   <h3>Este es el encabezado</h3>

End Section

Creación de helpers

C#VB.NET
@helper Tabla(int num) {

   <ul>

   @for (int i = 1; i < 11; i++)

   {

      <li>@num x @i = @(num*i) </li>

   }

   </ul>

}
@Helper Tabla(num As Integer)

   @:<ul>

   For i = 1 To 10

      @<li>@num x @i = @(num * i) </li>

   Next

   @:</ul>

End Helper

Bloques de funciones

C#VB.NET
@functions {

    int suma(int a, int b)

    {

        return a + b;

    }

}
@Functions

    Function suma(a As Integer,

                  b As Integer) As Integer

        Return a + b

    End Function

End Functions

Razor templated delegates

C#VB.NET
@{

    Func<dynamic, object> bold =

        @<strong>@item</strong>;

}



Uso: @bold("Esto en negrilla")
@Code

   Dim bold =

      Function(item As Object)

         @<strong>@item</strong>

      End Function

End code



Uso: @bold("Esto en negrilla")
@helper Lista(

   Func<dynamic, HelperResult> templ,

   params dynamic[] args)

{

    foreach(dynamic item in args)

    {

        @templ(item)

    }

}



Uso:

<ul>

   @Lista(@<li>@item</li>,

          1, 2, 3.5, "hola",

          DateTime.Now)

</ul>
@Helper Lista(templ

    As Func(Of Object, HelperResult),

    ParamArray args() As Object)



   For Each item In args

      @templ(item)

   Next

End helper



Uso:

<ul>

   @Lista(Function(item As Object)

            @<li>@item</li>

          End Function,

          1, 2, 3.5, "hola",

          DateTime.Now)

</ul>


Espero que no se me haya quedado por detrás ninguna de las construcciones habituales. De todas formas, si detectáis alguna ausencia, no dudéis en avisarme y lo incluyo en este mismo post.



Publicado en: Variable not found.



» Leer más, comentarios, etc...

Información legal y técnica