none
ViewComponents desde Ventana modal RRS feed

  • Pregunta

  • Hola Comunidad!

    Tengo una duda con los viewComponents. Anteriormente yo podia hacer un metodo  que no fuera accesible por url.

    [ChildActionOnly]
            public ActionResult Prueba()
            {
                return View();
            }

    Actualmente esta propiedad no funciona en NetCore 2.2 y leyendo la documentacion cambio por ViewComponents.

    Pero tengo un problema.

    Necesito desplegar unas ventanas modales y no encuentro la forma de hacerles un appen desde jquery a un ViewComponent, ya que es bastante pesada y no deberia renderizar si el usuario no la necesita. 

    [HttpGet]
            public async Task<ViewComponentResult> Prueba()
            {
                return ViewComponent("Prueba");
            }

    Con este codigo tengo un problema y es que pueden colocar la url y acceder a la ventana y por estilos esto no debe pasar.

    Que puedo hacer en este caso. Evitar que a ciertos metodos ingresen desde url?

    lunes, 25 de noviembre de 2019 2:11

Respuestas

  • hola

    lo que entiendo necesitas es un PartialView

    Vistas parciales en ASP.NET Core

    lo de limitar la url entiendo no es que lo consigues por accion del propio action sino porqe le pones [ChildActionOnly]

    pero son cosas distintas que no se pueda acceder por url a que sea muy pesado y no puedas usarlo desde jquery

    Entiendo los componentes

    Componentes de vista en ASP.NET Core

    son parecidos a las partial view

    >>no encuentro la forma de hacerles un appen desde jquery a un ViewComponent, ya que es bastante pesada y no deberia renderizar si el usuario no la necesita

    lo wue entiendo tiene que hacer es una llamada ajax al action de ese compomente o partialview y el html renderizado que envia lo inyectas en un <div> del popup

    pero eso lo controlas tu cuando invocas ese action, no lo pongas en la view porque sino se agregara directo, invocalo con ajax

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta jose_boliv martes, 3 de diciembre de 2019 14:21
    lunes, 25 de noviembre de 2019 4:22

Todas las respuestas

  • hola

    lo que entiendo necesitas es un PartialView

    Vistas parciales en ASP.NET Core

    lo de limitar la url entiendo no es que lo consigues por accion del propio action sino porqe le pones [ChildActionOnly]

    pero son cosas distintas que no se pueda acceder por url a que sea muy pesado y no puedas usarlo desde jquery

    Entiendo los componentes

    Componentes de vista en ASP.NET Core

    son parecidos a las partial view

    >>no encuentro la forma de hacerles un appen desde jquery a un ViewComponent, ya que es bastante pesada y no deberia renderizar si el usuario no la necesita

    lo wue entiendo tiene que hacer es una llamada ajax al action de ese compomente o partialview y el html renderizado que envia lo inyectas en un <div> del popup

    pero eso lo controlas tu cuando invocas ese action, no lo pongas en la view porque sino se agregara directo, invocalo con ajax

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta jose_boliv martes, 3 de diciembre de 2019 14:21
    lunes, 25 de noviembre de 2019 4:22
  • Muchas gracias. hay alguna forma de evitar que puedan desde la url llegarle a un metodo PartialView()

    public class AplicacionController
    {
    
    [HttpGet]
    public PartialViewResult Prueba()
            {
                return PartialView("VistaModal");
            }
    }

    En este caso puedo hacer esto: localhost/Aplicacion/Prueba

    Hay alguna forma de que las vistas sean accesibles solo por una vista padre?

    martes, 26 de noviembre de 2019 2:29
  • hola

    >>hay alguna forma de evitar que puedan desde la url llegarle a un metodo PartialView()

    hasta donde se no

    igual si implementaste un sistema de seguridad en donde solo quien se autentica puede acceder a la funcionalidad del sitio, si pusiera esa url simplemente veria un html mal formado porque le falta todo el contexto html donde aplicarse, creo que ni funcionaria por si sola esa partial que renderice

    ademas el usuario de por si no deberia conocer esas url, se supone que tu las usas desde ajax o desde Html.Action() por lo que es transparente para el usuario y veria eso como un todo de la view, porque crees que el usuario conoceria esa url? quizas de casualidad o porque un desarrollador se lo indica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 26 de noviembre de 2019 11:32