none
algun ejemplo ajax MVC get RRS feed

  • Pregunta

  • Bueno me gustaria si alguien me apoya con un link o un ejemplo de como mandar datos por metodo GET

    y mostrarlos

     

    a tengo un detalle o problema

    creo un proyecto limpio solo con las carpetas controlador moludos y vistas 

    cuando creo un controlador llamado Home y genero su vista esta tiene un simple contenido como hola mundo ejecuto el proyecto pero no me muestra nada la vista tiene el siguiente nombre Index.cshtml

    usando la ruta del navegador coloco tambien esto

    localhost:1422/home

    tampoco muestra nada 

    alguien me puede decir por que pasa eso

    esta es la imagen

     

    sábado, 12 de marzo de 2011 17:25

Respuestas

  • @yense

    Eso NO ES UN BUG. Eso es como funciona MVC3.

    Cada vez que la tabla de rutas recibe una URL debe poder enrutarla de forma inequívoca a un sólo método del controlador.

    Debes estar usando probablmente la tabla de rutas estándard {controller}/{action}/{id} con los valores por defecto controller="Home", action="Index" y id opcional.

    De acuerdo... entonces cuando llega una url, p.ej. /Home/Index... a que método lo enruta la tabla de rutas?

    1. Al método Index() y no le pasa nada?
    2. Al método Index(string idioma) y le pasa idioma=null?

    Tu igual lo ves claro: la URL /Home/Index debe ir al método Index() y /Home/Index?idioma=xxx debe ir a Index(string idioma). Pero la tabla de rutas no sabe esto, la tabla de rutas ve que puede asignar esa URL a ambos métodos y por eso da un error.

    Insisto: NO es un bug, es simplemente como funciona ASP.NET MVC ;-)

    Quieres recojer los datos GET en el mismo controlador? Tienes dos opciones:

    1. Crea una accción nueva (que no se llama Index sinó XXX y pon el atributo action del tag <form> a @Url.Action("XXX")
    2. Elimina esa indecisión en la tabla de rutas.

    Saludos.


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta Eder Costa viernes, 5 de octubre de 2012 15:01
    martes, 15 de marzo de 2011 11:42

Todas las respuestas

  • Para mandar datos por GET, simplemente los pones en la URL. Por ejemplo, puedes navegar a "micontrolador/miaccion/1234", y eso provoca un GET que envía 1234 al parámetro id del método de acción (y por supuesto puedes cambiar la tabla de rutas si quieres pasar otros parámetros). También puedes añadir parámetros con "?", por ejemplo si navegas a "micontrolador/miaccion?p1=a&p2=b", te llegan los valores a y b a los parámetros p1 y p2.

    Lo que comentas del proyecto con la vista Index, en teoría debería de funcionar, y tendrías que ver en el navegador lo que haya en la vista. Se tiene que haber escapado alguna cosa por algún sitio, pero con la información que aportas no hay forma de determinar qué puede estar faltando. ¿Has creado en el controlador el método Index, conteniendo "return View()"?

     

    sábado, 12 de marzo de 2011 18:14
  • Hola man

    bueno encontré cual era el problema te explico no se si es común o bug pero ahí va

    cree un controlador llamado Homecontroller

    el codigo que genera es el siguiente

    public ActionResult Index(){

                return View();

            }

            [HttpGet] <<<<<<<<< punto que malogra la vista

            public string Index(string idioma) {           

                return idioma;

            }

    Bueno esto es el controlador desde el "ActionResult Index" genero mi vista pero cuando lo ejecutaba no mostraba nada solo la pagina en blanco

    pero el detalle es desde la linea que comienza el "[HttpGet]" desde ahi lo malogra todo mejor dicho creo el proceso de recuperar los datos GETs ese es el que malogra lo saque de ahi y recien se mostro

    por ende me di obligado a gestionar los datos que recojo por GET por otro controlador

     

    o si me equivoco pueden hacer la prueba creen un proyecto MVC3 limpio

    creen un controlador home y creen su vista desde el controlador

    agreguen que gestione datos tipo GET 

     

    gracias de todas maneras

    sábado, 12 de marzo de 2011 18:33
  • @yense

    Eso NO ES UN BUG. Eso es como funciona MVC3.

    Cada vez que la tabla de rutas recibe una URL debe poder enrutarla de forma inequívoca a un sólo método del controlador.

    Debes estar usando probablmente la tabla de rutas estándard {controller}/{action}/{id} con los valores por defecto controller="Home", action="Index" y id opcional.

    De acuerdo... entonces cuando llega una url, p.ej. /Home/Index... a que método lo enruta la tabla de rutas?

    1. Al método Index() y no le pasa nada?
    2. Al método Index(string idioma) y le pasa idioma=null?

    Tu igual lo ves claro: la URL /Home/Index debe ir al método Index() y /Home/Index?idioma=xxx debe ir a Index(string idioma). Pero la tabla de rutas no sabe esto, la tabla de rutas ve que puede asignar esa URL a ambos métodos y por eso da un error.

    Insisto: NO es un bug, es simplemente como funciona ASP.NET MVC ;-)

    Quieres recojer los datos GET en el mismo controlador? Tienes dos opciones:

    1. Crea una accción nueva (que no se llama Index sinó XXX y pon el atributo action del tag <form> a @Url.Action("XXX")
    2. Elimina esa indecisión en la tabla de rutas.

    Saludos.


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta Eder Costa viernes, 5 de octubre de 2012 15:01
    martes, 15 de marzo de 2011 11:42