none
Problemas de ruta mvc4 RRS feed

  • Pregunta

  • Buenas Noches, tengo una aplicacion en MVC4, muy basica, que lo unico que quiero mostrar son unos registros en jqgrid.

    Este es mi controlador 

      public class homeController : Controller
        {

    pruebaInfoDAL prueba;
                  
            public homeController()
            {
             prueba = new pruebaInfoDAL();
            }

    public ActionResult Index(string order, string filtro) { var aux = prueba.GetRegistros(); return View("~/Views/Index.cshtml"); } [HttpPost] public JsonResult GetRegistros() { var dbResult = prueba.GetRegistros(); return Json(dbResult, JsonRequestBehavior.AllowGet); } }

    }


    Y mi vista, es la siguiente (lo copio todo, por las dudas)

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <link href="~/Script/jquery-ui-1.9.2.custom.css" rel="stylesheet" />
        <link href="~/Script/ui.jqgrid.css" rel="stylesheet" />
        <script src="~/Script/jquery-1.9.0.min.js"></script>
        <script src="~/Script/grid.locale-en.js"></script>
        <script src="~/Script/jquery.jqGrid.js"></script>
        <script src="~/Script/jquery-ui.js"></script>
    
        <title>Index</title>
    </head>
    <body>
                 <script>
    
    
    
                     $(document).ready(function () {
                         $("#jqGrid").jqGrid({
                             url: '@Url.Action("GetRegistros","home")',
                             mtype: "GET",
                             datatype: "json",
    
                             colModel: [
                                 { label: 'id', name: 'id', width: 45, key: true },
                                 { label: 'Producto', name: 'producto', width: 75 },
                                 { label: 'Descripcion', name: 'descripcion', width: 90 },
                                 {
                                     label: 'Fecha', name: 'fecha', width: 100, formatter: 'date',
                                     formatoptions: { srcformat: 'd/m/Y', newformat: 'ShortDate' },
                                     searchoptions: {
                                         sopt: ['eq', 'lt', 'le', 'gt', 'ge'],
                                         dataInit: function (elem) {
                                             $(elem).datepicker({
                                                 changeMonth: true, changeYear: true,
                                                 dateFormat: 'DD-mm-YYYY'
                                             });
                                         }
                                     }
                                 },
                                 { label: 'Cantidad', name: 'cantidad', width: 80, sorttype: 'integer' },
                                 // sorttype is used only if the data is loaded locally or loadonce is set to true
                                 {
                                     label: 'Precio Unitario', name: 'precio', width: 80,
                                     cellsformat: 'c2'
                                 },
                                 { label: 'Total', name: 'total', width: 80, sorttype: 'integer' },
    
                             ],
    
                             loadonce: true,
                             viewrecords: true,
                             width: 1000,
                             height: 400,
                             rowNum: 20,
                             rowList: [20, 30, 50],
                             rownumbers: true,
                             rownumWidth: 25,
                             multiselect: true,
                             pager: '#jqGridPager'
                         });
                     });
    
    
        </script>
        <div>
            
            <table id="jqGrid"></table>
        <div id="jqGridPager"></div>
    
        </div>
    </body>
    </html>

    Y mi tabla de ruta

    namespace MV4
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}"
                    ,defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional } 
    
                    );
            }
        }
    }

    Carga bien, hasta que trata de buscar el metodo para cargar la grilla y me tira este error

    Alguien tiene idea de porque no encuentra esa ruta ? Si tanto el controlador como la acción existe 


    Eduardo Acuña




    • Editado eduardo0391 sábado, 12 de marzo de 2016 6:11
    sábado, 12 de marzo de 2016 6:09

Todas las respuestas

  • Hola Eduardo,

    la acción del controlador la tienes decorada con el atributo HttpPost:

       	[HttpPost]
            public JsonResult GetRegistros()

    Por lo tanto únicamente va a responder a llamadas con el método POST.

    Sin embargo cuando llamas a la acción utilizas el método GET:

                         $("#jqGrid").jqGrid({
                             url: '@Url.Action("GetRegistros","home")',
                             mtype: "GET",
                             datatype: "json",

    Debería funcionarte cambiándolo por POST.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 12 de marzo de 2016 7:30