구현하고있는 모든 유형의 유형과 특정 유형의 인터페이스를 바인딩해야하는 간단한 웹 앱을 개발 중입니다. 내 인터페이스는 문서 클래스 IContent 그래서 그에 대한 구현하는 많은 다른 클래스의 한 여기에 깨끗이웹 API 및 RavenDB를 사용하여 상속 된 사용자 정의 모델 바인더
public class Article : IContent {
public string Id { get;set; }
public string Heading { get;set; }
}
과 같을 것이다,이 인터페이스를 사용하여이
public interface IContent {
string Id { get;set; }
}
일반적인 클래스처럼 하나의 속성이 있습니다 이러한 유형을 저장하고 업데이트하는 일반적인 방법이 필요합니다.
그래서 내 컨트롤러에 내가 가진이
public void Put(string id, [System.Web.Http.ModelBinding.ModelBinder(typeof(ContentModelBinder))] IContent value)
{
// Store the updated object in ravendb
}
와 ContentBinder 같은 put 메소드
public class ContentModelBinder : System.Web.Http.ModelBinding.IModelBinder {
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) {
actionContext.ControllerContext.Request.Content.ReadAsAsync<Article>().ContinueWith(task =>
{
Article model = task.Result;
bindingContext.Model = model;
});
return true;
}
}
는 제목 특성 잡아 보이지 않기 때문에 위의 코드는 작동하지 않습니다 기본 모델 바인더를 사용하더라도 제목을 올바르게 바인딩합니다.
그래서 BindModel 메서드에서 id를 기반으로 ravendb에서 올바른 개체를로드 한 다음 일종의 기본 모델 바인더를 사용하여 복잡한 개체를 업데이트해야 할 것 같습니까? 이것은 내가 도움이 필요한 곳입니다.
@ matt-johnson 실제로 모델을 업데이트하는 방법은 없지만 일부 코드로 내 질문을 업데이트했지만 시행 착오 일뿐입니다. – Marcus
@MattJohnson HttpContent.ReadAsAsync 또는 뭔가를 사용하여 특정 유형의 json을 deserialize 할 수 있습니까? –
Marcus
@ matt-johnson ReadAsAsync로 코드를 업데이트했지만 왜 작동하지 않는지 알 수 없습니다. – Marcus