2013-10-01 11 views
52

Ho un app ASP.Net MVC 4 e sto usando l'helper Url.Action in questo modo: @Url.Action("Information", "Admin")URL.Action() in particolare l'itinerario valori

Questa pagina viene utilizzata sia per l'aggiunta di un nuovo e modificare un profilo amministratore . Gli URL sono i seguenti:

Adding a new:  http://localhost:4935/Admin/Information 
Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID 

Quando sono nella sezione Editing Existing del sito e decido che vorrei aggiungere un nuovo amministratore clicco sul link seguente:

<a href="@Url.Action("Information", "Admin")">Add an Admin</a> 

Il problema tuttavia che il collegamento sopra sta andando a http://localhost:4935/Admin/Information/5. Questo succede solo quando sono in quella pagina che modifica un amministratore esistente. In qualsiasi altro punto del sito si collega correttamente a http://localhost:4935/Admin/Information

Qualcun altro ha visto questo?

UPDATE:

RouteConfig:

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

Hai controllato il tuo se i vostri percorsi registrazioni sono corrette? – Spock

+2

Cosa intendi? È praticamente la versione standard con il modello predefinito – hjavaher

risposta

75

url in uscita in MVC generato in base allo schema di routing corrente.

poiché il metodo di azione Informazioni richiede un parametro id e la propria raccolta di route ha un ID del proprio URL corrente richiesto (/ Admin/Informazioni/5), il parametro id viene acquisito automaticamente dai valori di raccolta del percorso esistente.

per risolvere questo problema è necessario utilizzare UrlParameter.Optional:

<a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a> 
+1

Come possiamo farlo in asp.net core? Non c'è 'UrlParameter.Optional' – MOD

0

È inoltre possibile utilizzare in questa forma:

<a href="@Url.Action("Information", "Admin", null)"> Admin</a>

Problemi correlati