none
Vista no esta renderizando imagen RRS feed

  • Pregunta

  • Hola, tengo una vista que no esta renderizando una imagen usando en el tag <img src="@Url.Content(item.Imagen)". Les comento un poco. Tengo un proyecto MVC, donde se usa para administracion (MVCAdministracion) y en este se suben imagenes a un servidor usando HttpPostedFileBase, y Server.MapPath. Con el Server.MapPath hago que se me guarde en una propiedad de un objeto Noticia (string PathImagen) el path de la imagen que subi desde un formulario con el HttpPostedFileBase.

    Eso lo hace perfecto, las imagenes se guardan bien, y en la base de datos me queda bien guardado el path. El problema es que al querer mostrar la imagen en otro proyecto mvc (MVCPresentacion), obtengo una lista de Noticia y hago <img src="Url.Content(item.PathImagen), pero no me la muestra.

    Les muestro codigo:

    View de presentacion:

    @foreach (var item in Model)
                {
                    <div class="col-md-4 col-sm-6 portfolio-item">
                        <a class="portfolio-link" data-toggle="modal" href="#portfolioModal1">
                            <div class="portfolio-hover">
                                <div class="portfolio-hover-content">
                                    <i class="fa fa-search-plus fa-3x"></i>
                                </div>
                            </div>
                            @*<img class="img-fluid rounded" src="@Url.Content(item.ImagenPortada)" alt="Image" />*@
                            @*<img class="img-fluid rounded" src="@item.ImagenPortada" alt="...">*@
                            <img src="https://localhost:44311/Content/imgNoticias/03-full.jpg" />
                        </a>                    
                        <div class="portfolio-caption">
                            <h4>@item.Titulo</h4>
                            <p class="text-muted">@item.Descripcion</p>
                        </div>
                    </div>

    Codigo para subir la imagen del controller:

    string path = "";
                if (imagenPortada != null)
                {
                    path = Server.MapPath("~/Content/imgNoticias/" + imagenPortada.FileName);
                    try
                    {
                        imagenPortada.SaveAs(path);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                    model.ImagenPortada = path;
                }

    Alguein sabe como puedo solucionarlo? Gracias.

    sábado, 24 de agosto de 2019 5:01

Todas las respuestas

  • Una forma fácil de depurar este tipo de problemas es acudir al navegador cuando está mostrando la página en la que no se ve la imagen, y usar la opción de "ver fuente" (o la F12). Ahí examinas el HTML que te ha llegado del servidor y te fijas en la URL que ha metido en la imagen. Normalmente viendo qué es lo que hay ahí te das inmediatamente cuenta de qué es lo que le sobra o le falta a esa URL.
    sábado, 24 de agosto de 2019 7:17
  • Hola, revisa lo comentado por Alberto. También decirte que en el código que has mostrado de tu vista, está comentada la parte dinámica, es decir la que estableces @Url.Content. Te propongo que pongas en esas líneas un punto de parada y cuando se detenga la ejecución del programa verifiques el contenido de item.ImagenPortada, para asegurarte que en esa pro piedad de tu modelo tengas la ruta de la imagen

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    domingo, 25 de agosto de 2019 21:33
    Moderador
  • hola

    si pones la url en el browser directamente puedes ver la imagen ? porque puede que la url que defines no sea valida

    Alli veo que guardas las imagen en una carpeta Content/imgNoticias, pero esta carpeta es accesible desde el browser? por eso menciono que pongas la url directo y valides que veas la imagen, sino lo haces entonces el problema esta en la generacion de la url o quizas no sea accesible (puede ser por temas de seguridad)

    Lo que no entiendo es porque tienes que poner https://localhost:44311/ en la url de la imagen


    cuando usar esto

    <img class="img-fluid rounded"src="@item.ImagenPortada"alt="...">

    estaba correcto si es que usas

    model.ImagenPortada = "~/Content/imgNoticias/" + imagenPortada.FileName;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de agosto de 2019 5:25