Asp.net mvc 4 如何注册接受多个参数的自定义模型绑定器+;MVC4
我有一个活页夹模型如下Asp.net mvc 4 如何注册接受多个参数的自定义模型绑定器+;MVC4,asp.net-mvc-4,Asp.net Mvc 4,我有一个活页夹模型如下 public PartyRoleModelBinder(IPartyRoleFactory prFactory) { PrFactory = prFactory; PRepo = pRepo; PrtRepo = prtRepo; } protected override object CreateModel(ControllerContext controllerContext, ModelBindingC
public PartyRoleModelBinder(IPartyRoleFactory prFactory)
{
PrFactory = prFactory;
PRepo = pRepo;
PrtRepo = prtRepo;
}
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
//doing some work here
}
private IPartyRoleFactory PrFactory { get; set; }
private IPartyRepository PRepo { get; set; }
private IPartyRoleTypeRepository PrtRepo { get; set; }
我在global.asax.cs中注册如下:
ModelBinders.Binders.Add(typeof(PartyRole), new PartyRoleModelBinder(DependencyResolver.Current.GetService<IPartyRoleFactory>()));
但我知道如何在global.asax.cs中注册
如果我像下面这样使用
ModelBinders.Binders.Add(typeof(PartyRole), new PartyRoleModelBinder(DependencyResolver.Current.GetService<IPartyRoleFactory>()));
ModelBinders.Binders.Add(typeof(PartyRole),newpartyrolemodelbinder(dependencysolver.Current.GetService());
它抛出:错误25“PartyWeb.ModelBinders.PartyRoleModelBinder”不包含接受1个参数的构造函数C:\d2\Apps\d2 admin\Global.asax.cs 35 57 d2 admin
或
ModelBinders.Binders.Add(typeof(PartyRole),newpartyrolemodelbinder(dependencysolver.Current.GetService());
编译错误:错误25非泛型方法“System.Web.Mvc.idependencysolver.GetService(System.Type)”不能与类型参数C:\d2\Apps\d2 admin\Global.asax.cs 35 109 d2 admin一起使用
有人能告诉我如何解决它吗?您正在尝试创建一个新的
PartyRoleModelBinder
实例,该实例在其(修改后的)构造函数中需要3个参数,但您只传递了1个参数,并且在过程中错误地使用了dependencysolver.Current.GetService
尝试:
var resolver=dependencysolver.Current;
IPartyRoleFactory角色库=resolver.GetService();
IPartyRepository repo=resolver.GetService();
IPartyRoleTypeRepo typeRepo=resolver.GetService();
var partyRoleModelBinder=新partyRoleModelBinder(角色扮演、类型回购、回购);
ModelBinders.Binders.Add(typeof(PartyRole),partyRoleModelBinder);
您正在尝试创建一个新的PartyRoleModelBinder
实例,该实例在其(修改的)构造函数中需要3个参数,但您只传递了1个参数,并且在过程中错误地使用了DependencyResolver.Current.GetService
尝试:
var resolver=dependencysolver.Current;
IPartyRoleFactory角色库=resolver.GetService();
IPartyRepository repo=resolver.GetService();
IPartyRoleTypeRepo typeRepo=resolver.GetService();
var partyRoleModelBinder=新partyRoleModelBinder(角色扮演、类型回购、回购);
ModelBinders.Binders.Add(typeof(PartyRole),partyRoleModelBinder);
我同意haim770。
另一种方法是:
ModelBinders.Binders.Add(typeof(PartyRole), new PartyRoleModelBinder(DependencyResolver.Current.GetService<IPartyRoleFactory>(),
DependencyResolver.Current.GetService<IPartyRoleTypeRepository>(), DependencyResolver.Current.GetService<IPartyRepository>()));
ModelBinders.Binders.Add(typeof(PartyRole),新的PartyRoleModelBinder(dependencysolver.Current.GetService(),
DependencyResolver.Current.GetService(),DependencyResolver.Current.GetService());
我同意haim770。
另一种方法是:
ModelBinders.Binders.Add(typeof(PartyRole), new PartyRoleModelBinder(DependencyResolver.Current.GetService<IPartyRoleFactory>(),
DependencyResolver.Current.GetService<IPartyRoleTypeRepository>(), DependencyResolver.Current.GetService<IPartyRepository>()));
ModelBinders.Binders.Add(typeof(PartyRole),新的PartyRoleModelBinder(dependencysolver.Current.GetService(),
DependencyResolver.Current.GetService(),DependencyResolver.Current.GetService());
太好了,你把它照亮了,现在也可以这样做:ModelBinders.Binders.Add(typeof(PartyRole),newpartyrolemodelbinder(DependencyResolver.Current.GetService(),DependencyResolver.Current.GetService(),DependencyResolver.Current.GetService(),DependencyResolver.Current.GetService());太好了,你说得对,现在这也可以做为:ModelBinders.Binders.Add(typeof(PartyRole),newpartyrolemodelbinder(dependencysolver.Current.GetService(),dependencysolver.Current.GetService(),dependencysolver.Current.GetService());
var resolver = DependencyResolver.Current;
IPartyRoleFactory roleFactory = resolver.GetService<IPartyRoleFactory>();
IPartyRepository repo = resolver.GetService<IPartyRepository>();
IPartyRoleTypeRepo typeRepo = resolver.GetService<IPartyRoleTypeRepository>();
var partyRoleModelBinder = new PartyRoleModelBinder(roleFactory, typeRepo, repo);
ModelBinders.Binders.Add(typeof(PartyRole), partyRoleModelBinder);
ModelBinders.Binders.Add(typeof(PartyRole), new PartyRoleModelBinder(DependencyResolver.Current.GetService<IPartyRoleFactory>(),
DependencyResolver.Current.GetService<IPartyRoleTypeRepository>(), DependencyResolver.Current.GetService<IPartyRepository>()));