2011-01-03 3 views
19

Я хотел бы отправить несколько параметров в действие в ASP.NET MVC. Я бы также хотел URL, чтобы выглядеть следующим образом:Отправка нескольких параметров в действия в ASP.NET MVC

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

вместо:

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

Я хотел бы сделать то же самое для отправителя, а, вот текущий URL:

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

Как выполнить как с C# в ASP.NET MVC?

ответ

26

Если вы в порядке с передачей вещей в строке запроса, это довольно просто. Просто измените метод действий, чтобы взять дополнительный параметр с совпадающим именем:

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

стал бы:

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

ASP.NET MVC будет выполнять работу проводки все для вас.

Если вы хотите чистый глядя URL, вам нужно просто добавить новый маршрут Global.asax.cs:

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

что формат URL? – Reza

+0

Не забудьте указать соответствующие определения маршрута в вашем global.asax. –

+0

@Reza - Я добавил URL-адреса в качестве комментариев в код. Если вы хотите использовать более чистый URL-адрес, вам нужно добавить настраиваемый маршрут в global.asax.cs. –

4

вы можете использовать любое правило маршрута, например:

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

также вы можете использовать параметры получения, такие как :baseUrl?param1=1&param2=2

и проверьте this link, я надеюсь, что это вам поможет.

12

Если вам нужен симпатичный URL-адрес, то добавьте следующее к своему 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 
); 

И затем использовать необходимые действия:

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

public ActionResult showItem(int id, int sender) 
{ 
    //view stuff here 
} 
Смежные вопросы