在同一对象上有2个自定义模型绑定器
本文关键字:自定义 模型 绑定 2个 对象 | 更新日期: 2023-09-27 17:50:17
我在Contract上有一个自定义绑定,用于验证我的登录用户是否可以查看该合约以及该合约是否存在。我希望有另一个绑定器来验证合约是否存在,以及令牌是否有效,因为用户不需要登录。
是否有可能在同一对象上有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());
如果在模型绑定器中使用授权逻辑,我会考虑再三。