Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191

    Web Route personalizzata

    Vorrei creare una web route personalizzata simile a quelle delle aree (AreaName/Controller/Action/id) solo che al posto dell'area ci dovrà andare una variabile:

    {Name}/{controller}/{action}/{id}


    avevo provato ad impostare il tutto in questo modo:
    codice:
                routes.MapRoute(
                    name: "Cliente_Admin",
                    url: "{name}/{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, name= UrlParameter.Optional }
                    );
    quando provo ad aprire un indirizzo con quel link mi dice che la pagina non è stato trovato ...

    Cosa sbaglio???

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    768
    una route cosi messa dopo quella di default non verrebbe mai scelta mentre messa prima creerebbe delle ambiguità: per es.

    /pippo
    /pippo/pluto

    chi è pippo? il name o il controller?
    e pippo/pluto? name/controller? o controller/action?

    queste route hanno bisogno di un elemento di specificità per es.

    codice:
    routes.MapRoute(
                    name: "Cliente_Admin",
                    url: "Gestione/{name}/{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, name= UrlParameter.Optional }
                    );
    le url sarebbero:

    /gestione
    /gestione/mario
    /gestione/mario/cont
    /gestione/mario/cont/act
    /gestione/mario/cont/act/1

    queste non funzionerebbero e/o creerebbero problemi:

    /gestione/mario/1
    /gestione/mario/act
    /gestione/cont

    la prima cercherebbe il controller "1"

    la seconda vorrebbe chiamare l'action "act" di home ma lui cercherebbe tra i controller un che si chiama act e se non lo trova ti solleva un eccezione (questo è un problema che hai anche nella route di default se provi a chiamare /index).

    la terza chiamerebbe home/index passando cont come name.

  3. #3
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191
    Avevo pensato a una cosa del genere:

    codice:
                context.MapRoute(
                    name: "Cliente_Admin",
                    url: "{name}/Admin/{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, name= UrlParameter.Optional },
                    namespaces: new[] { "MyProject.Areas.Admin.Controllers" }
                );
    
                context.MapRoute(
                    "Admin_default",
                    "Admin/{controller}/{action}/{id}",
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                    new[] { "MyProject.Areas.Admin.Controllers" }
                );
    Ho messo il codice in AdminAreaRegistration altrimenti non funzionava...

    Ora la prima route funziona perfettamente ....

    mentre la seconda no:

    se creo un link
    es:
    codice:
    @Html.ActionLink("LogOut", "LogOut", "Account", new { area = "Admin" }, null)
    mi restituisce il codice:
    codice:
    LogOut
    non c'è modo di risolvere???

    come posso gestire la situazione???

  4. #4
    Utente di HTML.it L'avatar di EnSa
    Registrato dal
    Apr 2009
    Messaggi
    191
    per ora ho risolto impostando {name} di Default a '~/', non so se è la soluzione migliore ma per ora funziona

    Se avete dei consigli da darmi sono ben accetti

  5. #5
    Utente di HTML.it L'avatar di MMArc#
    Registrato dal
    Jul 2013
    Messaggi
    47
    tutto dipende dallo scopo della tua web route
    I sogni sono realtà in anticipo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.