我在合同上有一个自定义绑定器,用于验证我的登录用户是否可以查看此合同以及合同是否存在。我想有一个其他绑定器来验证合同是否存在,以及令牌是否良好,因为用户不需要登录。
是否可以在同一个对象上有2个绑定器?我该怎么做?
答案 0 :(得分:2)
更新:
我检查了源码,你不能将两种自定义模型绑定器添加到一种类型。我对价值提供者感到困惑。
你基本上有两个选择,一个是创建一个大型模型绑定器(我认为这是更好的选择)。
另一种选择是创建一个模型绑定器提供程序,它返回一个满足特定需求的模型绑定器。
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容器中注册或添加它(在Global.asax - app start中):
ModelBinderProviders.BinderProviders.Add(new ContractModelBinderProvider());
我会考虑在模型装订器中使用授权逻辑。