• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

240
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.

about 3 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.

about 3 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
about 3 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í

about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda