Интересный пример
http://stackoverflow.com/questions/5818065/how-to-pass-request-querystring-to-url-action
public static RouteValueDictionary ToRouteValues(this NameValueCollection col, Object obj)
{
var values = new RouteValueDictionary(obj);
if (col != null)
{
foreach (string key in col)
{
//values passed in object override those already in collection
if (!values.ContainsKey(key)) values[key] = col[key];
}
}
return values;
}
Then you can use it like so:
Url.Action("action", "controller", Request.QueryString.ToRouteValues(new{ id=0 }));