URLで次のパラメーター名を受け取るGetメソッドを作成する必要があります。
ms-scale ms-contrast ms-lang
ご覧のとおり、すべての名前にはダッシュが含まれていますが、C#では不可能です。メソッドをこれらのパラメーター名にマップするにはどうすればよいですか?
public HttpResponseMessage Get(int scale, string contrast string lang)
URLで次のパラメーター名を受け取るGetメソッドを作成する必要があります。
ms-scale ms-contrast ms-lang
ご覧のとおり、すべての名前にはダッシュが含まれていますが、C#では不可能です。メソッドをこれらのパラメーター名にマップするにはどうすればよいですか?
public HttpResponseMessage Get(int scale, string contrast string lang)
FromUriAttributeを使用する
public HttpResponseMessage Get([FromUri(Name = "ms-scale")]int scale, [FromUri(Name = "ms-contrast")]string contrast, [FromUri(Name = "ms-lang")]string lang)
私はどこかでこれを前に尋ねられ、この答えを見つけました:
更新しました
これをWebAPIで機能させるには、少し変更する必要があります。
[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);
}
}
そしてそれを使用する方法:
[BindParameter(ActionParameterName = "customData", ViewParameterName = "custom-data")]
public string Get(string customData) {}
これは、データが本体ではなくURIからのものである場合にのみ機能することに注意してください。POSTデータで動作させる方法については、現時点ではよくわかりません。