2014-06-17 8 views
5

Attualmente nel mio progetto sto usando @ Url.Action per creare collegamenti nell'attributo href dei tag di ancoraggio.Url.Action produce querystring, un modo per produrre URL completi?

per esempio:

<a href='@Url.Action("Index", "Home", new { id = 10 })' id="btn">Click</a> 

E questo funziona bene, tuttavia l'URL prodotta è ...

/home/index?id=10 

c'è un modo per restituire l'URL

/home/index/10 

per SEO e scopi estetici? Ho usato un id e il numero come segnaposto - in applicazione reale che può e vuole utilizzare una stringa invece (così ...

<a href='@Url.Action("Index", "Home", new { name="test" })' id="btn">Click</a> 

per restituire l'URL

/home/index/test 
+0

'Url.Action' utilizzerà la tabella di routing, è impostato correttamente per consentire questo? – DavidG

+0

@DavidG È consentito, poiché è possibile utilizzare l'URL completo. Comunque entrambi portano alla stessa pagina. '/ home/index/test' funziona - ma anche'/home/index? name = test' –

risposta

3

è necessario assicurarsi che il percorso è corretto assicurarsi di avere un percorso come questo:.

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

Per la vostra 'applicazione reale', come si utilizza un parametro chiamato name avrete bisogno di uno simile a questo:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{name}", 
    defaults: new { controller = "Home", action = "Index" }); 
Problemi correlati