首页 > 解决方案 > 模型绑定未执行

问题描述

我正在尝试查看传入请求的内容,因此我可以编写一个适当的对象来绑定到 JSON。
IIUC,我的通用提供程序和绑定代码应该在每个 POST 上执行,无论传入类型如何。

我看不到我错过了什么。我的 Binder 和 Provider 代码不执行。

我在这里定义了提供者和绑定器。

public class GenericModelBinderProvider: IModelBinderProvider
{
    public IModelBinder GetBinder(Type modelType)
    {
        return new GenericModelBinder(); // breakpoint
    }
}
public class GenericModelBinder: IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        try // breakpoint
        {
            //1.
            var model = bindingContext.ModelType;
            //2.
            var data = new XmlSerializer(model);
            //3.
            var receivedStream = controllerContext.HttpContext.Request.InputStream;
            //4.
            return data.Deserialize(receivedStream);
        }
        catch (Exception ex)
        {
            bindingContext.ModelState.AddModelError("Error", "Received Model cannot be serialized");
            return null;
        }

    }
}

我在启动时注册它。这个断点确实被击中。

        ModelBinderProviders.BinderProviders.Insert(0, new GenericModelBinderProvider());

或者

        ModelBinders.Binders.Add(typeof(object), new GenericModelBinder());

标签: asp.netmodelbindersimodelbinder

解决方案


推荐阅读