I was asked this before somewhere else and found this answer:
Using a dash (-) in ASP.MVC parameters
Updated
In order to get this working with Web API we need to modify it a bit.
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class BindParameterAttribute : ActionFilterAttribute
{
public string ViewParameterName { get; set; }
public string ActionParameterName { get; set; }
public override void OnActionExecuting(HttpActionContext actionContext)
{
var viewParameter = actionContext.Request.RequestUri.ParseQueryString()[ViewParameterName];
if (!string.IsNullOrWhiteSpace(viewParameter))
actionContext.ActionArguments[ActionParameterName] = viewParameter;
base.OnActionExecuting(actionContext);
}
}
And how to use it:
[BindParameter(ActionParameterName = "customData", ViewParameterName = "custom-data")]
public string Get(string customData) {}
Please note, that this only works if your data comes from the uri, not body. How to make it work with POST data, I'm not really sure of at the moment.