Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

273
Vistas
¿Cómo puedo pasar ViewData al método Action de la clase?

quiero reemplazar

 public IActionResult Index() { ViewData["SomeData"] = ... return View(); }

con

 public IActionResult Index() { _someDataCretor.Create(...); return View(); }

¿Qué debería suceder en SomeDataCreator.Create() para que esto funcione? Para que View obtenga ViewData.

Gracias.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

ViewData se define como public ViewDataDictionary ViewData { get; set; } . Por lo tanto, puede pasarlo como un parámetro a su método:

 public IActionResult Index() { _someDataCretor.Create(ViewData); return View(); }

Y en el método Create(ViewDataDictionary viewdata) :

 viewdata["SomeData"] = ...;

Pero supongo que un enfoque más razonable es devolver un objeto del método Create() que se pasará a la vista Index como modelo de vista.

over 4 years ago · Santiago Trujillo Denunciar

0

Suponiendo _someDataCreator contiene los datos que desea en la vista, simplemente los pasaría como modelo:

 return View(_someDataCreator);

o si devuelve un objeto, puede devolver ese resultado:

 var result = _someDateCreator.Create(...); return View(result);

y en su opinión, haga referencia a ese tipo:

 @model My.Namespace.MyObject
over 4 years ago · Santiago Trujillo Denunciar

0

ViewData se usa para pasar datos de los controladores a las vistas y dentro de las vistas, incluidas las vistas parciales y los diseños. Puede intentar usar TempData , aquí hay una demostración:

 public class MyDepedency { private readonly IHttpContextAccessor _httpContextAccessor; private readonly ITempDataDictionaryFactory _tempDataDictionaryFactory; public MyDepedency(IHttpContextAccessor httpContextAccessor, ITempDataDictionaryFactory tempDataDictionaryFactory) { _httpContextAccessor = httpContextAccessor; _tempDataDictionaryFactory = tempDataDictionaryFactory; } public void Create() { var httpContext = _httpContextAccessor.HttpContext; var tempData = _tempDataDictionaryFactory.GetTempData(httpContext); // use tempData as usual tempData["SomeData"] = "Bar"; } }

Puesta en marcha:

 public void ConfigureServices(IServiceCollection services) { ... services.AddControllersWithViews(); services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton<MyDepedency, MyDepedency>(); }

Controlador:

 public class HomeController : Controller { public MyDepedency _myDepedency; public HomeController(MyDepedency myDepedency) { _myDepedency = myDepedency; } public IActionResult Index() { _myDepedency.Create(); return View(); }

Vista:

 <h1>@TempData.Peek("SomeData")</h1>

resultado: ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda