如何在ASP Net MVC 4 Web API中的自定义模型活页夹中访问我的请求内容



我一直在考虑如何解决我以前的问题中的问题

我可以访问.NET Web API模型绑定无法处理的数据吗?

我可以使用自己的自定义模型活页夹,这样我可以处理完美的情况,并在获得我没想到的数据时写入日志。

i具有以下类和模型绑定器

 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数据中填充的一个人对象,并且使用自定义模型粘合剂,我总是会得到一个人(id = 2,name =" dave")。

问题是我似乎无法在自定义模型活页夹中访问JSON数据。

bindmodel方法中的myperson和mypersonname变量均为无效。但是,MyID变量填充了343。

有什么想法我如何在我的bindmodel方法中访问JSON中的数据?

尝试以下:

actionContext.Request.Content.ReadAsStreamAsync()

相关内容

  • 没有找到相关文章

最新更新