none
Error de servidor en la aplicación '/'. RRS feed

  • Pregunta

  • saludos tengo esta pantalla que despues de mucho tira y afloja logre hacer funcionar:

    la gracia es que después de presionar el botón grabar, la lista se actualiza con el depto agregado,  hasta ahí todo bien, incluso los botones de exportación funcionan. Pero :

    al hacer clic en el boton Editar, que esta definido de la siguiente forma:

      @Html.ActionLink("Editar","EditDept",new { id=item.Id_Depto}, new { @class = "btn btn-success btn-xs glyphicon glyphicon-pencil" } )

    llama y pasa el parametro id=item.Id_Depto al controlador EditDept, el cual esta definido de la siguiente forma:

      public ActionResult EditDept(int Id)
            {
                var Result = Deptos.SP_Sel_Depto(Id).FirstOrDefault();
                return View(Result);
            }

    al llamar a la vista:  este me llama a la vista cuyo nombre es el contenido de la variable Result y me aparece el mensaje de : Error de servidor en la aplicación '/'.

    en cambio si llamo  a la vista de la siguiente manera : return View();,  esta aparece sin ningún problema, pero con el dato que quiero vacío ( puesto que no estoy pasando ningún parámetro y en realidad no me sirve).

    alguien me podría echar una manito de ayuda????, gracias


    martes, 7 de enero de 2020 3:50

Respuestas

  • El return View(...) tiene dos sobrecargas que son View(string) y View(object). Cuando le pasas un string, entiende que es el nombre de la vista (y el modelo vacío), y cuando le pasas un object entiende que es el valor para el model, y que el nombre de la vista es el mismo que el del método.

    El problema de lo anterior es que cuando el object resulta ser un string, entonces la resolución de sobrecargas entiende que quieres usar la primera y no la segunda, y te interpreta ese string como nombre de vista y no como valor del modelo.

    El remedio cuando eso sucede es usar otra sobrecarga de View que toma los dos parámetros (string, object) y de esa manera te deja pasar el nombre de la vista y el valor del modelo aunque éste sea un string:

    return View("EditDept", Result);

    martes, 7 de enero de 2020 6:37
  • saludos

    cambie el modo de pasar los datos:

       public ActionResult EditDept(int Id)
            {
                var Result = Deptos.SP_Sel_Depto(Id).FirstOrDefault();

                Departamento datos = new Departamento();
                datos.Id_Depto = Id;
                datos.NomDepto = Result;
                return View("EditDept",datos);
            }

     y así  resulta, Gracias

    martes, 7 de enero de 2020 21:00

Todas las respuestas

  • El return View(...) tiene dos sobrecargas que son View(string) y View(object). Cuando le pasas un string, entiende que es el nombre de la vista (y el modelo vacío), y cuando le pasas un object entiende que es el valor para el model, y que el nombre de la vista es el mismo que el del método.

    El problema de lo anterior es que cuando el object resulta ser un string, entonces la resolución de sobrecargas entiende que quieres usar la primera y no la segunda, y te interpreta ese string como nombre de vista y no como valor del modelo.

    El remedio cuando eso sucede es usar otra sobrecarga de View que toma los dos parámetros (string, object) y de esa manera te deja pasar el nombre de la vista y el valor del modelo aunque éste sea un string:

    return View("EditDept", Result);

    martes, 7 de enero de 2020 6:37
  • Gracias , hice lo indicado, pero la situación persiste,  por si acaso, la grilla donde hago clic es una vista parcial, podrá influir en eso la situación???'

      public ActionResult EditDept(int Id)
            {
                var Result = Deptos.SP_Sel_Depto(Id).FirstOrDefault();
                return View("EditDept", Result);
            }

    saludos

    martes, 7 de enero de 2020 16:05
  •  la situación persiste

    No, "la situación persiste" no es suficiente descripción del problema. Si antes se llamaba a la vista cuyo nombre estaba en Result, ahora con el nombre de la vista escrito entre comillas ya no se debe estar llamando a Result. ¿Qué es exactamente lo que resulta devuelto? Y luego, "Error de servidor en la aplicación '/'" tampoco nos dice nada. Ese mensaje sale siempre que ocurre cualquier error. Lo importante es reproducir el mensaje exacto que viene debajo. Si no sale el error, entonces salen en su lugar las instrucciones que explican cómo hacer que salgan los errores. Hay que seguirlas, y después copiar el mensaje de error (completo, exacto y detallado).
    martes, 7 de enero de 2020 19:14
  • Esto es lo que aparece:

    Error de servidor en la aplicación '/'.

    No se encuentra la vista 'AAAA' ni su vista maestra o no hay un motor de búsqueda que admita las ubicaciones de búsqueda. Se buscó en las siguientes ubicaciones:
    ~/Views/Departamentos/AAAA.aspx
    ~/Views/Departamentos/AAAA.ascx
    ~/Views/Shared/AAAA.aspx
    ~/Views/Shared/AAAA.ascx
    ~/Views/Departamentos/AAAA.cshtml
    ~/Views/Departamentos/AAAA.vbhtml
    ~/Views/Shared/AAAA.cshtml
    ~/Views/Shared/AAAA.vbhtml

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.InvalidOperationException: No se encuentra la vista 'AAAA' ni su vista maestra o no hay un motor de búsqueda que admita las ubicaciones de búsqueda. Se buscó en las siguientes ubicaciones:
    ~/Views/Departamentos/AAAA.aspx
    ~/Views/Departamentos/AAAA.ascx
    ~/Views/Shared/AAAA.aspx
    ~/Views/Shared/AAAA.ascx
    ~/Views/Departamentos/AAAA.cshtml
    ~/Views/Departamentos/AAAA.vbhtml
    ~/Views/Shared/AAAA.cshtml
    ~/Views/Shared/AAAA.vbhtml

    Error de código fuente:

    Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

    Seguimiento de la pila:

    [InvalidOperationException: No se encuentra la vista 'AAAA' ni su vista maestra o no hay un motor de búsqueda que admita las ubicaciones de búsqueda. Se buscó en las siguientes ubicaciones: ~/Views/Departamentos/AAAA.aspx ~/Views/Departamentos/AAAA.ascx ~/Views/Shared/AAAA.aspx ~/Views/Shared/AAAA.ascx ~/Views/Departamentos/AAAA.cshtml ~/Views/Departamentos/AAAA.vbhtml ~/Views/Shared/AAAA.cshtml ~/Views/Shared/AAAA.vbhtml] System.Web.Mvc.ViewResult.FindView(ControllerContext context) +382 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +116 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52 System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__3() +198 System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45 System.Web.Mvc.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller) +13 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9836613 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +163

    Espero que con eso sea suficiente

    a proposito AAAAAA, es el resultado de la consulta ( lo que en este caso esta bien).

    martes, 7 de enero de 2020 20:13
  • saludos

    cambie el modo de pasar los datos:

       public ActionResult EditDept(int Id)
            {
                var Result = Deptos.SP_Sel_Depto(Id).FirstOrDefault();

                Departamento datos = new Departamento();
                datos.Id_Depto = Id;
                datos.NomDepto = Result;
                return View("EditDept",datos);
            }

     y así  resulta, Gracias

    martes, 7 de enero de 2020 21:00