나는Asp Net MVC 4 Web Api의 사용자 정의 모델 바인더에서 내 요청 컨텐츠에 대한 액세스 권한을 얻으려면 어떻게해야합니까?
Can I get access to the data that the .net web api model binding was not able to handle?
나는 내 자신의 사용자 정의 모델 바인더를 사용할 수있는 일이있어가, 그런 식으로 내가 완벽하게 사건을 처리 할 수있는 내 앞의 질문에 한 문제를 해결할 수있는 방법에 대해 생각하고있다 , 내가 예상하지 못한 데이터를 얻을 때 로그에 기록하십시오.
여기
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
public class CustomPersonModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
var myPerson = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var myPersonName = bindingContext.ValueProvider.GetValue("Name");
var myId = bindingContext.ValueProvider.GetValue("Id");
bindingContext.Model = new Person {Id = 2, Name = "dave"};
return true;
}
}
public class CustomPersonModelBinderProvider : ModelBinderProvider
{
private CustomPersonModelBinder _customPersonModelBinder = new CustomPersonModelBinder();
public override IModelBinder GetBinder(HttpConfiguration configuration, Type modelType)
{
if (modelType == typeof (Person))
{
return _customPersonModelBinder;
}
return null;
}
}
다음과 같은 클래스와 모델 바인더 내 컨트롤러 방법
public HttpResponseMessage Post([ModelBinder(typeof(CustomPersonModelBinderProvider))]Person person)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
이다하고 난
Post http://localhost:18475/00.00.001/trial/343
{
"Id": 31,
"Name": "Camera Broken"
}
이 작품 피들러를 사용하여 호출 된 위대한, 사용자 정의 모델 바인더를 사용하지 않고 나는 내 json 데이터에서 채워진 Person 객체를 얻는다. 내 포스트 메서드에서, 그리고 사용자 정의 모델 바인더를 사용하면 항상 사람 (ID = 2, Name = "dave")을 얻습니다.
문제는 내 사용자 정의 모델 바인더에서 JSon 데이터에 액세스 할 수 없다는 것입니다.
bindModel 메서드의 myPerson 및 myPersonName 변수가 모두 null입니다. myId 변수에는 343이 채워집니다.
내 BindModel 메서드 내에서 json의 데이터에 어떻게 액세스 할 수 있습니까?
표시되지 않습니다. 기본 모델 바인더는 유효한 JSON을 잘 처리합니다. 너는 실제로 어떤 문제가 있니? –