请求有效负载不会被转换为自定义请求对象。
有效载荷
appl5=MC~IC&i~PhoneToPhone~inet_ptt_cb_phn~1=440&inet_ptt_cb_phn~3=7406&i~PhoneToPhone~inet_ptt_cb_delay=0&BeenHere=TRUE
它在keyvalue对中有〜(在键和值中都有)。
我有一个请求模型,将输入参数转换为avalid对象。
注意:我的C#属性中没有〜。 (我可以吗?)
My Post方法具有以下代码
public HttpResponseMessage Post(ClientRequest request)
{
HttpResponseMessage response;
try
{
ProcessRequest target = new ProcessRequest(myRepository, myService);
response = target.Process(request);
}
catch (Exception exception)
{
response = Request.CreateErrorResponse(HttpStatusCode.NotFound, exception.Message);
//TODO : Log Exception.
}
return response;
}
模型
public class ClientRequest
{
public string Appl5 { get; set; }
public string I_PhoneToPhone_inet_ptt_cb_phn_1 { get; set; }
public string I_PhoneToPhone_inet_ptt_cb_delay { get; set; }
public string Inet_ptt_cb_phn_3 { get; set; }
public string BeenHere { get; set; }
}
我的请求对象没有i~PhoneToPhone~inet_ptt_cb_phn~1的值,它为null。
我的理解是模型绑定没有发生,因为有效负载密钥不匹配 与我的模型(ClientRequest)没有〜为我~ThoneToPhone~inet_ptt_cb_phn~1 而我有i_PhoneToPhone_inet_ptt_cb_phn_1
我应该使用自定义绑定吗?
答案 0 :(得分:0)
最后,添加了自定义模型绑定器
public class PostParameterModelBinder:IModelBinder {
bool IModelBinder.BindModel(System.Web.Http.Controllers.HttpActionContext actionContext, ModelBindingContext bindingContext)
{
bool success = false;
if (bindingContext.ModelType == typeof(ClientRequest))
{
NameValueCollection postData = null;
postData = actionContext.Request.Content.ReadAsFormDataAsync().Result;
ClientRequest clientrequest = MapPostDataToRequest(postData);
bindingContext.Model = clientrequest;
success = true;
}
return success;
}
}
}