Quiero cargar una imagen de la base de datos cuando se carga la página y al hacer clic en un botón.
cuando se carga el formulario, funciona bien, pero cuando hago clic en el botón, necesito pasar el valor del menú desplegable y llamar al controlador en javascript usando Url.Action.
cuando hago clic en el botón, aparece Error al cargar el recurso: el servidor respondió con un estado de 500 ()
método del controlador:
public FileContentResult MyAction(int compId) { byte[] img = new byte[100000]; img = _unitOfWork.Company.GetAll().Where(a => a.Id == compId). Select(a => a.PhotoAd).FirstOrDefault(); if (img == null) { return null; } return new FileContentResult(img, "img/jpg"); }Vista:
<body> <div class="col-4" > <div class="form-group row"> <div class="col-2"> <label asp-for="forCompList.CompId">Company</label> </div> <div class="col-8"> @Html.DropDownListFor(m => m.forCompList.CompId, Model.CompList, new { @class = "form-control" }) </div> </div> <div class="col-2 text-right"> <button class="btn btn-primary" style="background-color:forestgreen" onclick="LoadImage()"> <i class="fa fa-refresh"></i> Load Company Image</button> </div> <div> <img src= '@Url.Action("MyAction", "AdImage", new{path="img/jpg", compId = ViewBag.compId})' id="AdImage"/> </div> </div> </body> @section Scripts{ <script src="~/lib/jquery/dist/jquery.min.js"></script> <script type="text/javascript"> function LoadImage() { var cid = document.getElementById('forCompList_CompId').value; window.alert(cid); $('#AdImage').src = '@Url.Action("MyAction", "AdImage",new{path="img/jpg"})?compId='+cid; } </script>cambiaría ajax a esto
$('#AdImage').attr('src','@Url.Action("MyAction", "AdImage")' + '?path=img/jpg&compId=' + cid);