在同一对象上有2个自定义模型绑定器

本文关键字:自定义 模型 绑定 2个 对象 | 更新日期: 2023-09-27 17:50:17

我在Contract上有一个自定义绑定,用于验证我的登录用户是否可以查看该合约以及该合约是否存在。我希望有另一个绑定器来验证合约是否存在,以及令牌是否有效,因为用户不需要登录。

是否有可能在同一对象上有2个粘合剂?我该怎么做呢?

在同一对象上有2个自定义模型绑定器

UPDATE:

我已经检查了源代码,你不能有两个自定义模型绑定到一个类型。我把value providers搞混了。

你基本上有两个选择,一个是创建一个大的模型粘合剂(我认为这是更好的选择)。

另一种选择是创建一个模型绑定器提供程序,它为特定的需求返回一个模型绑定器。

public class ContractModelBinderProvider : IModelBinderProvider
{
    public IModelBinder GetBinder(Type modelType)
    {
          if(modelType == typeof(Contract))
            {
                 if(LoggedIn)
                 {
                       return  new LoggedInContractBinder();
                 }
                 else
                 { 
                       return new NotLoggedContractBinder(); 
                 } 
            } 
           return null;
    }
}

,那么你需要在你的DependencyResolver/IOC容器中注册它。Asax - app start):

ModelBinderProviders.BinderProviders.Add(new ContractModelBinderProvider());

如果在模型绑定器中使用授权逻辑,我会考虑再三。