none
Rotas em Formulário POST RRS feed

  • Pergunta

  • Eu preciso postar os dados para o Controller: BuscarDados, Action Index, porém, existem 5 campos no formulário, são do tipo "select", onde ao menos 2 são obrigatórios, eu quero montar a url com os dados deste filtros, exemplo:

    Estive olhando o site http://www.imovelweb.com.br, o jeito que ele usa para filtrar os dados, é exatamente isso que preciso, alguém tem uma dica de como posso fazer para criar as rotas?

    Exemplo:

    meusite.com.br/imovel, mas posso ir passando parâmetros , assim:

    meusite.com.br/imovel-venda

    meusite.com.br/imovel-venda-apartamento

    meusite.com.br/imovel-venda-apartamento-sao-paulo

    ou seja, vou passando parâmetros e parâmetros .

    Obrigado,



    • Editado CEFL domingo, 8 de fevereiro de 2015 22:53
    domingo, 8 de fevereiro de 2015 14:17

Respostas

  • Caso você mude a ordem dos parâmetros, você também deverá atualizar a ordem das rotas no atributo "Route".

    Por exemplo, invertendo negocio com tipo temos:

    [Route("{tipo?}/{negocio?}/{cidade?}")]
    public ActionResult Index(string tipo, string negocio, string cidade)

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins, Kakaroo

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:42
    terça-feira, 10 de fevereiro de 2015 18:38

Todas as Respostas

  • Olá CEFL,

    Você poderá utilizar anotações de rotas em seu controller e action para configurar as requisições.

    No arquivo "/App_Start/RouteConfig.cs" adicione a chamada de mapeamento de rotas por atributo:

    public static void RegisterRoutes(RouteCollection routes)
    {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapMvcAttributeRoutes();
                ...
    }

    Em seu controller "BuscarDados" ("/Controllers/BuscarDadosController.cs") adicione os atributos de rota:

    [RoutePrefix("imovel")]
    public class BuscarDadosController : Controller
    {
        //
        // GET: /BuscarDados/
        [Route("{negocio?}/{tipo?}/{cidade?}")]
        public ActionResult Index(string negocio, string tipo, string cidade)
        {
            // aplicar filtro aqui

            return View();
        }
    }

    As requisições com parâmetros ficarão assim:

    Requisição: http://localhost/imovel
    Parâmetros: negocio = null, tipo = null, cidade = null
    ---------------------------------------
    Requisição: http://localhost/imovel/venda
    Parâmetros: negocio = "venda", tipo = null, cidade = null
    ---------------------------------------
    Requisição: http://localhost/imovel/venda/apartamento
    Parâmetros: negocio = "venda", tipo = "apartamento", cidade = null
    ---------------------------------------
    Requisição: http://localhost/imovel/venda/apartamento/sao-paulo
    Parâmetros: negocio = "venda", tipo = "apartamento", cidade = "sao-paulo"

    Leia mais em:

    http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
    http://www.davidhayden.me/blog/asp-net-mvc-5-attribute-routing

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins, Kakaroo

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 17:05
    • Não Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:16
    terça-feira, 10 de fevereiro de 2015 14:40
  • Só uma dúvida, se eu inverter, por exemplo,não seguir a ordem, ao invés de passar negocio, tipo, passar somente a cidade, como ele vai entender qual a rota a ser usada?
    terça-feira, 10 de fevereiro de 2015 18:17
  • Caso você mude a ordem dos parâmetros, você também deverá atualizar a ordem das rotas no atributo "Route".

    Por exemplo, invertendo negocio com tipo temos:

    [Route("{tipo?}/{negocio?}/{cidade?}")]
    public ActionResult Index(string tipo, string negocio, string cidade)

    Caso não resolva, deixe-nos saber.

    Saudações,
    Kallebe Lins, Kakaroo

    • Marcado como Resposta CEFL terça-feira, 10 de fevereiro de 2015 18:42
    terça-feira, 10 de fevereiro de 2015 18:38