Invio di più parametri alle azioni in ASP.NET MVC

Vorrei inviare più parametri a un’azione in ASP.NET MVC. Mi piacerebbe anche che l’URL assomiglia a questo:

http://example.com/products/item/2 

invece di:

 http://example.com/products/item.aspx?id=2 

Mi piacerebbe fare lo stesso anche per il mittente, ecco l’URL corrente:

 http://example.com/products/item.aspx?id=2&sender=1 

Come posso realizzare sia con C # in ASP.NET MVC?

Se stai bene con il passaggio delle cose nella stringa di query, è abbastanza facile. Basta cambiare il metodo Action per prendere un parametro aggiuntivo con un nome corrispondente:

 // Products/Item.aspx?id=2 or Products/Item/2 public ActionResult Item(int id) { } 

Potrebbe diventare:

 // Products/Item.aspx?id=2&sender=1 or Products/Item/2?sender=1 public ActionResult Item(int id, int sender) { } 

ASP.NET MVC farà il lavoro di colbind tutto per te.

Se si desidera un URL dall’aspetto pulito, è sufficiente aggiungere la nuova route a Global.asax.cs:

 // will allow for Products/Item/2/1 routes.MapRoute( "ItemDetailsWithSender", "Products/Item/{id}/{sender}", new { controller = "Products", action = "Item" } ); 

Se desideri un URL carino, aggiungi quanto segue al tuo global.asax.cs .

 routes.MapRoute("ProductIDs", "Products/item/{id}", new { controller = Products, action = showItem, id="" } new { id = @"\d+" } ); routes.MapRoute("ProductIDWithSender", "Products/item/{sender}/{id}/", new { controller = Products, action = showItem, id="" sender="" } new { id = @"\d+", [email protected]"[0-9]" } //constraint ); 

E poi usare le azioni necessarie:

 public ActionResult showItem(int id) { //view stuff here. } public ActionResult showItem(int id, int sender) { //view stuff here } 

puoi utilizzare qualsiasi regola di percorso, ad esempio:

 {controller}/{action}/{param1}/{param2} 

inoltre puoi usare get parametri come :baseUrl?param1=1&param2=2

e controlla questo link , spero che ti possa aiutare.