我需要创建一个 Get 方法,该方法在 URL 中采用以下参数名称:
ms-scale ms-对比度 ms-lang
如您所见,所有名称中都有一个破折号,这在 C# 中是不可能的。如何将我的方法映射到这些参数名称?
public HttpResponseMessage Get(int scale, string contrast string lang)
我需要创建一个 Get 方法,该方法在 URL 中采用以下参数名称:
ms-scale ms-对比度 ms-lang
如您所见,所有名称中都有一个破折号,这在 C# 中是不可能的。如何将我的方法映射到这些参数名称?
public HttpResponseMessage Get(int scale, string contrast string lang)
public HttpResponseMessage Get([FromUri(Name = "ms-scale")]int scale, [FromUri(Name = "ms-contrast")]string contrast, [FromUri(Name = "ms-lang")]string lang)
我在其他地方之前被问过这个问题并找到了这个答案:
更新
为了让它与 Web API 一起工作,我们需要对其进行一些修改。
[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 数据一起使用,我目前还不确定。