none
Rotas customizadas RRS feed

  • Pergunta

  • Por exemplo, eu tenho a seguinte rota

    [RoutePrefix("imovel")]
    public class imovelController : Controller
    {
        [Route("{negocio?}/{tipo?}/{cidade?}")]
        public ActionResult Index(string negocio, string tipo, string cidade)
        {
            return View();
        }
    }

    Se eu chamar

    • site.com.br/imovel
    • site.com.br/imovel/venda (correto, é o negocio venda)
    • site.com.br/imovel/venda/casa (correto)
    • site.com.br/imovel/venda/casa/sao-paulo (correto)
    • site.com.br/imovel/casa  (errado, é o tipo, mas quero que funcione que chame o tipo ao invés de negocio)

    Como eu posso identificar qual a rota correta? Corrigir para que ao enviar o dado ele encontre a rota correta?


    • Editado CEFL terça-feira, 28 de abril de 2015 18:23
    terça-feira, 28 de abril de 2015 18:21

Respostas

  • Recomendo você dar uma olhadinha nos treinamentos do Renato Haddad pois fala exatamente como construir rotas alternativas.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta CEFL quarta-feira, 6 de maio de 2015 13:05
    quarta-feira, 29 de abril de 2015 20:10

Todas as Respostas

  • Tente criar duas actions:

    [RoutePrefix("imovel")]
    public class imovelController : Controller
    {
        [Route("{negocio?}/{tipo?}/{cidade?}")]
        public ActionResult Index(string negocio, string tipo, string cidade)
        {
            return View();
        }
    
        [Route("{tipo?}/{cidade?}")]
        public ActionResult Index2(string tipo, string cidade)
        {
            return View(); // ou return RedirectToAction("Index");
        }
    }

    Outra forma seria vc mapear as rotas como descrito aqui http://stackoverflow.com/questions/1045316/asp-net-mvc-ambiguous-action-methods#answer-1045374


    Att. Andre de Mattos Ferraz




    terça-feira, 28 de abril de 2015 18:27
  • Eu criei duas rotas, mas conflita já que são 2 parâmetros, minha ideia é ter um filtro semelhante ao da OLX. Eu estou indo pelo caminho errado? 

    Ou o que eles fazem é ter tudo mapeado na mão ao invés de ser dinâmico?

       [Route("{tipo?}/{cidade?}")]
        public ActionResult Index2(string tipo, string cidade)
        {
            return View(); // ou return RedirectToAction("Index");
        }

       [Route("{negocio?}/{tipo?}")]
        public ActionResult Index2(string tipo, string cidade)
        {
            return View(); // ou return RedirectToAction("Index");
        }

    terça-feira, 28 de abril de 2015 21:01
  • O MVC não suporta overload de métodos baseado SOMENTE na assinatura. A única forma que eu vejo é mapear essa rota na mão conforme o link que passei. Posso estar errado, talvez alguem saiba outra forma, eu somente não sei mesmo.

    Att. Andre de Mattos Ferraz

    quarta-feira, 29 de abril de 2015 12:24
  • Recomendo você dar uma olhadinha nos treinamentos do Renato Haddad pois fala exatamente como construir rotas alternativas.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta CEFL quarta-feira, 6 de maio de 2015 13:05
    quarta-feira, 29 de abril de 2015 20:10