ASP.NET Razor - Sintaxis de código C# y VB
Razor es compatible con C# (C sostenido) y VB (Visual Basic).
Reglas principales de sintaxis de Razor para C#
- Los bloques de código Razor están encerrados en @{ ... }
- Las expresiones en línea (variables y funciones) comienzan con @
- Las declaraciones de código terminan con punto y coma
- Las variables se declaran con la palabra clave var
- Las cadenas se encierran entre comillas
- El código C# distingue entre mayúsculas y minúsculas
- Los archivos C# tienen la extensión .cshtml
Ejemplo de C#
<!-- Single statement block -->
@{ var myMessage = "Hello World"; }
<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}
<p>The greeting is: @greetingMessage</p>
Reglas principales de sintaxis de Razor para VB
- Los bloques de código Razor están encerrados en @Code ... End Code
- Las expresiones en línea (variables y funciones) comienzan con @
- Las variables se declaran con la palabra clave Dim
- Las cadenas se encierran entre comillas
- El código VB no distingue entre mayúsculas y minúsculas
- Los archivos VB tienen la extensión .vbhtml
Ejemplo
<!-- Single statement block -->
@Code dim myMessage = "Hello World" End Code
<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@Code
dim greeting = "Welcome to our site!"
dim weekDay = DateTime.Now.DayOfWeek
dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
End Code
<p>The greeting is: @greetingMessage</p>
¿Como funciona?
Razor es una sintaxis de programación simple para incrustar código de servidor en páginas web.
La sintaxis de Razor se basa en el marco ASP.NET, la parte de Microsoft.NET Framework que está diseñada específicamente para crear aplicaciones web.
La sintaxis de Razor le brinda todo el poder de ASP.NET, pero usa una sintaxis simplificada que es más fácil de aprender si es un principiante y lo hace más productivo si es un experto.
Las páginas web de Razor se pueden describir como páginas HTML con dos tipos de contenido: contenido HTML y código Razor.
Cuando el servidor lee la página, primero ejecuta el código Razor, antes de enviar la página HTML al navegador. El código que se ejecuta en el servidor puede realizar tareas que no se pueden realizar en el navegador, por ejemplo, acceder a una base de datos del servidor. El código del servidor puede crear contenido HTML dinámico sobre la marcha, antes de enviarlo al navegador. Visto desde el navegador, el HTML generado por el código del servidor no es diferente del contenido HTML estático.
Las páginas web ASP.NET con sintaxis Razor tienen la extensión de archivo especial cshtml (Razor usando C#) o vbhtml (Razor usando VB).
Trabajar con objetos
La codificación del servidor a menudo involucra objetos.
El objeto "DateTime" es un objeto ASP.NET incorporado típico, pero los objetos también pueden ser autodefinidos, una página web, un cuadro de texto, un archivo, un registro de base de datos, etc.
Los objetos pueden tener métodos que pueden realizar. Un registro de base de datos puede tener un método "Guardar", un objeto de imagen puede tener un método "Rotar", un objeto de correo electrónico puede tener un método "Enviar", etc.
Los objetos también tienen propiedades que describen sus características. Un registro de la base de datos puede tener una propiedad FirstName y LastName (entre otras).
El objeto DateTime de ASP.NET tiene una propiedad Now (escrita como DateTime.Now) y la propiedad Now tiene una propiedad Day (escrita como DateTime.Now.Day). El siguiente ejemplo muestra cómo acceder a algunas propiedades del objeto DateTime:
Ejemplo
<table border="1">
<tr>
<th
width="100px">Name</th>
<td width="100px">Value</td>
</tr>
<tr>
<td>Day</td><td>@DateTime.Now.Day</td>
</tr>
<tr>
<td>Hour</td><td>@DateTime.Now.Hour</td>
</tr>
<tr>
<td>Minute</td><td>@DateTime.Now.Minute</td>
</tr>
<tr>
<td>Second</td><td>@DateTime.Now.Second</td>
</tr>
</td>
</table>
Condiciones si y si no
Una característica importante de las páginas web dinámicas es que puede determinar qué hacer en función de las condiciones.
La forma común de hacer esto es con las sentencias if... else:
Ejemplo
@{
var txt = "";
if(DateTime.Now.Hour > 12)
{txt = "Good Evening";}
else
{txt = "Good Morning";}
}
<html>
<body>
<p>The message is @txt</p>
</body>
</html>
Lectura de la entrada del usuario
Otra característica importante de las páginas web dinámicas es que puede leer la entrada del usuario.
La entrada es leída por la función Request[], y la publicación (entrada) es probada por la condición IsPost:
Ejemplo
@{
var totalMessage = "";
if(IsPost)
{
var num1 = Request["text1"];
var num2 = Request["text2"];
var total = num1.AsInt() + num2.AsInt();
totalMessage =
"Total = " + total;
}
}
<html>
<body
style="background-color: beige; font-family: Verdana, Arial;">
<form
action="" method="post">
<p><label for="text1">First Number:</label><br>
<input type="text" name="text1" /></p>
<p><label for="text2">Second
Number:</label><br>
<input type="text" name="text2" /></p>
<p><input
type="submit" value=" Add " /></p>
</form>
<p>@totalMessage</p>
</body>
</html>