c# - Cannot pass a repository parameter to a specific controller -
i using simple membership account registration , need store data when user registers. i'm using ninject dependency injection , have repository gets list of states populate dropdownlist. can pass parameter constructor in other controllers works fine. however, returns null when try pass account controller. obviously, there difference between controller , others can't figure out might be. how passing repository parameter constructor.
public class accountcontroller : controller { private readonly istaterepository srepository; public accountcontroller(istaterepository srepo) { srepository = srepo; } public actionresult register(registermodel model) { var statequery = srepository.states.select(m => new selectlistitem { value = sqlfunctions.stringconvert((double)m.stateid), text = m.state1, selected = m.stateid.equals(0) }); model.statelist = statequery.asenumerable(); //more code submit registration return view(model); } } public class registermodel { [required] [display(name = "user name")] public string username { get; set; } [required] [stringlength(100, errormessage = "the {0} must @ least {2} characters long.", minimumlength = 6)] [datatype(datatype.password)] [display(name = "password")] public string password { get; set; } [datatype(datatype.password)] [display(name = "confirm password")] [system.componentmodel.dataannotations.compare("password", errormessage = "the password , confirmation password not match.")] public string confirmpassword { get; set; } [required] [display(name = "address")] public string address1 { get; set; } [display(name = "apt #")] public string address2 { get; set; } [required] [display(name = "city")] public string city { get; set; } [required] [display(name = "state")] public string state { get; set; } [required] [display(name = "zip")] public string zip { get; set; } public string stateid { get; set; } public ienumerable<selectlistitem> statelist { get; set; } }
dropdownlist register view
@html.dropdownlistfor(model => model.stateid, model.statelist)
repository interface
public interface istaterepository { iqueryable<state> states { get; } }
repository
public class efstaterepository : istaterepository { //private efdbcontext context = new efdbcontext(); private entities context = new entities(); public iqueryable<state> states { { return context.states; } } }
binding
ninjectkernel.bind<istaterepository>().to<efstaterepository>();
has else had problem? edited add - gratefully received people have not had problem, have suggestions. :-)
Comments
Post a Comment