开发者

Sending multiple parameters to Actions in ASP.NET MVC

I'd like to send multiple parameters to an action in ASP.NET MVC. I'd also like the URL to look like this:

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

instead of:

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

I'd like to do the same for sender as well, here's the current URL:

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

How do I a开发者_高级运维ccomplish both with C# in ASP.NET MVC?


If you're ok with passing things in the query string, it's quite easy. Simply change the Action method to take an additional parameter with a matching name:

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

Would become:

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

ASP.NET MVC will do the work of wiring everything up for you.

If you want a clean looking URL, you simply need to add the new route to Global.asax.cs:

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


If you want a pretty URL, then add the following to your 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+", sender=@"[0-9]" } //constraint
);

And then to use the needed actions:

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

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


you can use any route rule for example:

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

also you can use get params like :baseUrl?param1=1&param2=2

and check this link, i hope it will help you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜