Nosabit.NetReact
1.2.4
dotnet add package Nosabit.NetReact --version 1.2.4
NuGet\Install-Package Nosabit.NetReact -Version 1.2.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Nosabit.NetReact" Version="1.2.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Nosabit.NetReact" Version="1.2.4" />
<PackageReference Include="Nosabit.NetReact" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Nosabit.NetReact --version 1.2.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Nosabit.NetReact, 1.2.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Nosabit.NetReact&version=1.2.4
#tool nuget:?package=Nosabit.NetReact&version=1.2.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Nosabit.NetReact
Una biblioteca que facilita la integración entre ASP.NET Core y aplicaciones React, proporcionando extensiones, atributos personalizados y utilidades para mejorar el desarrollo de aplicaciones web modernas.
Instalación
Package Manager
Install-Package Nosabit.NetReact
.NET CLI
dotnet add package Nosabit.NetReact
PackageReference
<PackageReference Include="Nosabit.NetReact" />
Características principales
- Codificación y decodificación de parámetros: Oculta y procesa parámetros en URLs
- Mensajería entre páginas: Sistema para mostrar mensajes entre redirecciones
- Atributos personalizados: Facilita la integración de ASP.NET Core con React
- Procesamiento de archivos: Extensiones para trabajar con archivos de formulario y Excel
- Automatización de NPM: Manejo de scripts NPM durante el desarrollo
- Extensiones de sesión: Simplifica el almacenamiento de objetos complejos en sesión
- Tag Helpers: Componentes para mostrar mensajes y otros elementos en Razor Pages
Ejemplos de uso
Codificación y decodificación de parámetros
// Ocultar un valor en una URL
string valorOculto = FromQueryEncode.Hidden(123);
// Resultado: Base64 de "[ocultar]_123"
// En un controlador, usar el atributo para decodificar automáticamente
public class MiControlador : Controller
{
public IActionResult Detalle([FromQueryDecode] int id)
{
// El valor ya viene decodificado automáticamente
return View(id);
}
}
Mensajería entre páginas
// En un controlador o Razor Page, guardar un mensaje
TempData.CrearMensaje("Operación completada con éxito", "/destino", 1);
// 1 = Éxito, 0 = Info, -1 = Error
// Si ocurre una excepción
try
{
// Código que puede fallar
}
catch (Exception ex)
{
TempData.CrearMensaje(ex, "/destino");
return RedirectToPage("/destino");
}
// En la página de Razor (cshtml), mostrar el mensaje automáticamente
<Message-App />
Atributos React
// Marcar una página para usar propiedades React
[React]
public class MiPaginaModel : PageModel
{
// Propiedades que se pasarán a React
[ReactProp]
public string Titulo { get; set; } = "Mi título";
// Resto del código...
}
Procesamiento de archivos Excel
// En un controlador que recibe un archivo Excel
[HttpPost]
public IActionResult ProcesarExcel(IFormFile archivo)
{
if (archivo != null)
{
// Convertir el Excel a una colección de DataTable
DataTableCollection tablas = archivo.ExcelToTables();
// Procesar la primera tabla
DataTable primeraHoja = tablas[0];
foreach (DataRow fila in primeraHoja.Rows)
{
// Procesar cada fila...
}
}
return Ok();
}
Extensiones de sesión para objetos complejos
// Guardar un objeto complejo en la sesión
MiClase miObjeto = new MiClase { Propiedad = "Valor" };
HttpContext.Session.Set("miObjeto", miObjeto);
// Recuperar el objeto de la sesión
MiClase? objetoRecuperado = HttpContext.Session.Get<MiClase>("miObjeto");
Devolver JavaScripts dinámicos
public class MiControlador : Controller
{
public IActionResult ObtenerScript()
{
string scriptDinamico = "alert('Hola mundo');";
return new JavaScriptResult(scriptDinamico);
}
}
Configuración para manejo de NPM en desarrollo
// En Program.cs
var builder = WebApplication.CreateBuilder(args);
// Añadir servicios...
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
// Esto ejecutará automáticamente "npm run start" durante el desarrollo
app.NpmScript("start");
}
// El resto de la configuración...
Adición de cabeceras para descarga de archivos
// En un controlador que devuelve un archivo
[HttpGet]
public IActionResult DescargarArchivo()
{
byte[] datos = ObtenerDatosArchivo();
Response.Headers.AddResponseFile("mi-archivo.pdf");
return File(datos, "application/pdf");
}
// Para mostrar en lugar de descargar
[HttpGet]
public IActionResult VerArchivo()
{
byte[] datos = ObtenerDatosArchivo();
Response.Headers.AddResponseFile("mi-archivo.pdf", true); // true = solo visualizar
return File(datos, "application/pdf");
}
Uso de EndpointSlice para controladores anidados
// Definición de un controlador anidado con EndpointSlice
[EndpointSlice]
public class ProductoController : ControllerBase
{
[HttpGet("api/productos")]
public IActionResult ObtenerTodos()
{
// Implementación...
}
}
// Habilitar el proveedor de características mejorado automáticamente
builder.AddWebApiBuilder(UseEndpointSlice: true);
Uso de WebBuilderAppExtension para configurar aplicaciones ASP.NET Core
// Configuración de una aplicación Web API
var builder = WebApplication.CreateBuilder(args);
// Configurar servicios optimizados y Web API
builder
.AddAppSettingsGlobal()
.AddWebOptimizeBuilder()
.AddWebApiBuilder(AddCors: true);
// Agregar servicios personalizados
builder.AddServicesBuilder(services =>
{
services.AddScoped<IMiServicio, MiServicio>();
// Más registros de servicios...
});
var app = builder.Build();
// Configurar middleware
app
.UseWebOptimizeBuilder()
.UseWebApiConfiguration()
.UseWebApiDocumentation();
// Configuración personalizada
app.UseAppBuilder(appInstance =>
{
// Configuración personalizada...
});
app.Run();
Configuración de una aplicación React
// Configuración de una aplicación React con ASP.NET Core
var builder = WebApplication.CreateBuilder(args);
// Configurar servicios
builder
.AddAppSettingsGlobal()
.AddWebOptimizeBuilder()
.AddWebAppBuilder(AzureAuthAd: false);
var app = builder.Build();
// Configurar middleware
app
.UseWebOptimizeBuilder()
.UseReactWebAppConfiguration();
app.Run();
Componentes principales
App
- FromQueryDecode.cs: Decodifica parámetros ocultos en URLs
- MensajeriaApp.cs: Sistema de mensajes entre redirecciones usando TempData
Attributes
- EndpointSliceAttribute.cs: Permite controladores anidados
- FromQueryDecodeAttribute.cs: Atributo para decodificar parámetros automáticamente
- ReactAttribute.cs: Marca páginas para usar con React
- ReactProp.cs: Marca propiedades para pasar a React
Extensions
- IFormFileExtension.cs: Extensiones para procesar archivos de formulario y Excel
- JavaScriptResult.cs: Clase para devolver JavaScript como resultado de acción
- NpmScriptExtension.cs: Automatiza la ejecución de scripts NPM durante desarrollo
- ReponseHeadersExtension.cs: Añade cabeceras para descarga de archivos
- SessionAppExtensions.cs: Simplifica el almacenamiento de objetos en sesión
- WebBuilderAppExtension.cs: Facilita la configuración de aplicaciones ASP.NET Core
Integración con Nosabit.Core
Este paquete funciona mejor cuando se usa junto con Nosabit.Core, que proporciona utilidades adicionales como extensiones para manejo de fechas, cadenas y seguridad.
Requisitos
- .NET 6.0 o superior
- ASP.NET Core
- ExcelDataReader (para funcionalidades de Excel)
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- ExcelDataReader (>= 3.7.0)
- ExcelDataReader.DataSet (>= 3.7.0)
- Microsoft.AspNetCore.OpenApi (>= 9.0.3)
- Microsoft.Identity.Web (>= 3.8.2)
- Microsoft.Identity.Web.MicrosoftGraph (>= 3.8.2)
- Microsoft.Identity.Web.UI (>= 3.8.2)
- Nosabit.Core (>= 1.2.3)
- Scalar.AspNetCore (>= 2.1.4)
- System.Text.Json (>= 9.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.4 | 131 | 9 days ago |
1.2.2 | 464 | 16 days ago |
1.2.1 | 151 | 18 days ago |
1.2.0 | 138 | 19 days ago |
1.1.7 | 61 | 19 days ago |
1.1.6 | 97 | 20 days ago |
1.1.5 | 98 | 20 days ago |
1.1.4 | 102 | 20 days ago |
1.1.3 | 105 | 20 days ago |
1.1.2 | 101 | 20 days ago |
1.1.1 | 107 | 20 days ago |
1.1.0 | 108 | 20 days ago |
1.0.4 | 132 | 21 days ago |
1.0.3 | 130 | 22 days ago |
1.0.2 | 133 | 22 days ago |
1.0.1 | 131 | 23 days ago |
1.0.0 | 137 | 24 days ago |