Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net mvc是否可以使用两个自定义模型绑定器?_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# asp.net mvc是否可以使用两个自定义模型绑定器?

C# asp.net mvc是否可以使用两个自定义模型绑定器?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,所以我有一个从DefaultModelBinder继承的自定义模型绑定器,在这里我重写BindProperty方法来处理我们创建的字段类型 我还有一个我们想覆盖BindModel的控制器,因为我们正在使用该控制器处理多视图会话中的对象 我有CustomModelBinder:DefaultModelBinder,然后在重写BindModel的类中,我有从CustomModelBinder继承的。特殊模型绑定器:CustomModelBinder 但是我在CustomModelBinder中的Bi

所以我有一个从DefaultModelBinder继承的自定义模型绑定器,在这里我重写BindProperty方法来处理我们创建的字段类型

我还有一个我们想覆盖BindModel的控制器,因为我们正在使用该控制器处理多视图会话中的对象

我有CustomModelBinder:DefaultModelBinder,然后在重写BindModel的类中,我有从CustomModelBinder继承的。特殊模型绑定器:CustomModelBinder

但是我在CustomModelBinder中的BindProperty重写中设置了一个断点,当使用同样重写BindModel的控制器时,这一点永远不会被击中

我不能这样继承吗?这里发生了什么事

谢谢大家!

编辑:

在global.asax中:

ModelBinders.Binders.Add(typeof(ClassA), new SpecialModelBinder());
ModelBinders.Binders.Add(typeof(ClassB), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassC), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassD), new CustomModelBinder());

public class CustomModelBinder : DefaultModelBinder
{
    // this will be hit in controllers that handle classes B, C, and D, but will not be hit in controller that handles ClassA
    protected override void BindProperty(...){}
}

public class SpecialModelBinder : CustomModelBinder
{  
    // this will be hit when working in controller that handles ClassA only
    public override object BindModel(...){}
}

我在一个空的MVC应用程序中重新创建了您描述的场景,但无法复制您在这里描述的情况。我从CustomModelBinder子类化SpecialModelBinder并在所有类中命中两个断点都没有问题。您是否可以提供其他信息来说明解决方案?正如您在这里所描述的,对于ClassA和B、C和D,只命中BindProperty方法的断点应该没有问题

我尝试过的场景: 1编辑ClassA。结果:为类中的每个属性调用SpecialModelBinder上的BindModel和CustomModelBinder上的BindProperty; 2编辑类B、C或D。结果:CustomModelBinder上的BindProperty为类上的每个属性调用


在Global.asax中,除了区域和路线注册调用之外,您的应用程序\u Start方法中还有其他内容吗?

您可以发布一些示例代码吗?