Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Usar booleanos? ¿Sí, no, a veces?
José María Aguilar - Generar archivos Excel como un señor con ClosedXml
José María Aguilar
.NET Core / .NET
- A Practical Guide to Modular Monoliths with .NET
Charles Chen - How To Remove HTML Tags From a String in C#
Code Maze - Fortifying Your .NET Project
Dick van Straaten - To Upgrade or Not to Upgrade: Is .NET 8 Worth the Leap from .NET 6?
DeeDee Walsh - SerilogTracing
Nicholas Blumhardt - How to get assembly code generated by the JIT for a C# method
Gérald Barré - How to Truncate a String in .NET
Code Maze - How to Escape Curly Brackets and Special Characters in C#
Lennart Pries - A Range kata implementation in C#
Mark Seemann - How to Maximize the Browser Window With Selenium in C#
Semir Teskeredzic - Testing your incremental generator pipeline outputs are cacheable: Creating a source generator
Andrew Lock - C# Tip: ObservableCollection - a data type to intercept changes to the collection
Davide Bellone - How to Check if Items of a List Exist in Another List in C#
Martin Chege - Microsoft Office's RTC (Real-Time Channel) migration to modern .NET
Gilad Oren - Three new LINQ methods in .NET 9
Steven Giesel - Fastest Way to Convert a JObject to a Dictionary in C#
Code Maze
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: enlaces
Como sabemos, gran parte de las validaciones en formularios Blazor las implementamos usando anotaciones de datos, o data annotations. Estas anotaciones nos permiten validar los datos de entrada antes de que ejecutemos la lógica de negocio, que normalmente se encontrará en el handler del evento OnValidSubmit
del formulario.
Vemos un ejemplo de formulario Blazor aquí, y el código C# justo debajo:
@page "/friend"
<h3>FriendEditor</h3>
<EditForm Model="Friend" OnValidSubmit="Save">
<DataAnnotationsValidator />
<div class="form-group mb-2">
<label for="name">Name:</label>
<ValidationMessage For="()=>Friend.Name" />
<InputText @bind-Value="Friend.Name" class="form-control" id="name" />
</div>
<div class="form-group mb-2">
<label for="score">Score:</label>
<ValidationMessage For="()=>Friend.Score" />
<InputNumber @bind-Value="Friend.Score" class="form-control" id="score" />
</div>
<div class="form-group mb-2">
<label for="birthDate">BirthDate:</label>
<ValidationMessage For="()=>Friend.BirthDate" />
<InputDate @bind-Value="Friend.BirthDate" class="form-control" id="birthDate" />
</div>
<div class="form-group mb-2">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</EditForm>
@code {
private FriendViewModel Friend = new();
private async Task Save()
{
await Task.Delay(1000);
Friend = new FriendViewModel();
}
public class FriendViewModel
{
[Required(ErrorMessage = "El nombre es obligatorio")]
public string Name { get; set; }
[Range(0, 10, ErrorMessage = "La puntuación debe estar entre {1} y {2}")]
public int Score { get; set; }
public DateTime BirthDate { get; set; }
}
}
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Raw string literals en C# 11
José María Aguilar - Desacoplando controladores ASP.NET MVC, paso a paso
José María Aguilar
.NET Core / .NET
- Avoiding performance pitfalls in incremental generators: Creating a source generator, part 9
Andrew Lock - Authenticating a .NET GitHub App using a JSON Web Token (JWT)
Steve Gordon - An alternative to AutoMapper
Steven Giesel - Difference between CultureInfo.Get and new CultureInfo
Gérald Barré - Converting String to Byte Array in C#
Caleb Okechukwu - Going Native
Cory Smith - How to Save a List to a Text File in C#
Code Maze - What Does yield Do In C#: A Simplified View For Beginners
Nick Cosentino - What We Are Doing Wrong with Logging in C#
Mabrouk Mahdhi - Interceptors – Using C# 12 in Rider and ReSharper
Khalid Abuhakmeh - Mocking GraphQL queries with WireMock.NET
Cezary Piątek - How to Ensure a String Is Valid JSON in C#
Code Maze - 3 Simple Steps to Split an Excel File into Multiple Excel Files in C#
Mohan Chandran - Plugin Architecture Pattern in C#
Alvaro Montoya - How to Create a Temp File in the Temp Folder in C#
Code Maze - A replacement for BinaryFormatter in .NET 8
Steven Giesel
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- PeriodicTimer: Temporizadores asíncronos en .NET 6
José María Aguilar - 101 nuevas citas célebres del mundo de la informática (¡y van 404!)
José María Aguilar
.NET Core / .NET
- GitHub - praeclarum/1brc: The One Billion Row Challenge
Frank A. Krueger - Making primary constructor parameters read-only
Gérald Barré - Consistent Byte Representation of Strings in C# Without Encoding
Code Maze - Throw ThrowIfCancellationRequested in a Method that Returns a Value when Using a Cancellation Token
Bryan Hogan - Coravel - Easy task scheduling for your .NET web apps
Jon Hilton - A brief look at StringValues
Andrew Lock - Const strings are not so const after all
Steven Giesel - Some Stream.Read Guidelines
Mark Heath - Using implicit conversion operators in C# to improve readability
Henrique Dalcin Dalmas - When to Use Thread.Sleep, When to Use Task.Delay?
Code Maze - How to Distribute Roslyn Analyzers via NuGet
Aaron Stannard
Primero, espero que hayáis disfrutado las fiestas y que el 2024 que acabamos de estrenar venga bien cargado de cosas buenas 🙂
Y para inaugurar el año, como cada primer post de enero, aprovecharemos para revisar las diez publicaciones más leídas durante los últimos 365 días.
Ante todo, aprovecho para desearos felices fiestas y, como no nos veremos por aquí hasta enero, un grandioso 2024.
Y, por supuesto, ahí van los enlaces recopilados durante la semana pasada que, como siempre, espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo recibir un JSON como string en una acción ASP.NET Core MVC
José María Aguilar - ¿Por qué separamos los directorios con la barra invertida?
José María Aguilar
.NET Core / .NET
- FluentResults: Simplificando el Manejo de Resultados y Errores en Aplicaciones .NET
Isaac Ojeda - Customize the HttpClient logging
Josef Ottosson - Using the CLI to Build and Run .NET Applications
Dusko Mirkovic - Validating appsettings becomes much faster with .NET 8
David Grace - Custom Naming Policy for JSON in C#
Tomas Bak - Top 6 Performance Tips when dealing with strings in C# 12 and .NET 8
Davide Bellone - Updates to the StronglyTypedId library - simplification, templating, and CodeFixes: Using strongly-typed entity IDs to avoid primitive obsession
Andrew Lock - MemoizR - Declarative Structured Concurrency for C#
Khalid Abuhakmeh - Introduction to Autofac FakeItEasy Package
Ainea Wabwoba - What User Interface Framework Should You Choose for .NET Desktop Applications?
Claudio Bernasconi - Discriminated Unions in C#
Ian Russell - Debugging and Profiling Multithreaded .NET Applications
Code Maze - 5 Serilog Best Practices For Better Structured Logging
Milan Jovanović - What Is String Interpolation In C# – What You Need To Know
Nick Cosentino - What's New in Our Code Coverage Tooling?
Jakub Chocholowicz - The first possible new feature of C# 13: Params collection
Steven Giesel - Execute JavaScript Using Selenium WebDriver in C#
Vadzim Zylevich - Integrating OpenAI Image Generation into a .NET Application
Rick Strahl - A Practical Tour of MoreLINQ
Atif Aziz