I’m using ASP.NET MVC 3.

I was used to rely on filterContext.RouteData.Values to get parameters from the url

 

var idEdited = filterContext.RouteData.Values["id"];

 

This works fine as long as the url does not have specific parameters, like here:

http://www.mysite.com/myapplication/User/Edit/1234

 

However, when the parameter is not a routevalue anymore, like in the example below, then you would get a OfficeId= null when using the previous method :

http://www.mysite.com/myapplication/User/Edit/1234?OfficeId=567

When you are in that case, there is a way to get both the route value “id” and the parameter “OfficeId” using the ValueProvider  :

 


var idEdited = filterContext.Controller.ValueProvider.GetValue("id").AttemptedValue;

var idEditedOffice = filterContext.Controller.ValueProvider.GetValue("OfficeId").AttemptedValue;

 

The ValueProvider will search into route values and url parameters (also in POST parameters, apparently).

 

thanks to  http://stackoverflow.com/questions/6998809/question-about-routedata-and-valueprovider-on-asp-net-mvc3