我正在關注Steven Sanderson的Pro MVC2書籍,並對使用Ninject有疑問。如何在MVC中使用Ninject查詢參數?
在體育商店的例子,我們在Global.asax.cs中
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
和NinjectControllerFactory
被定義爲:
public class NinjectControllerFactory : DefaultControllerFactory
{
//A Ninject "kernet" is the thing that can supply object instances
private IKernel kernel = new StandardKernel(new SportsStoreServices());
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return (IController)kernel.Get(controllerType);
}
private class SportsStoreServices : NinjectModule
{
public string QString = null;
public override void Load()
{
Bind<IProductsRepository>().To<SqlProductsRepository>()
.WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString);
}
}
}
正如你所看到的SqlProductsRepository
從取連接字符串配置文件。如果我需要根據URL查詢字符串參數做出決定,例如如果param1 = true我想從一個存儲庫加載另一個,我該怎麼做?我試圖看看如何訪問Load()
方法中的查詢參數,但我無法找到一個預填充的地方。
也是Load()
基於查詢參數做出決定的正確位置,還是應該以某種方式在Controller中作出此決定?
不是一個nark,但是... Ctrl-K非常適合正確縮進代碼並標記關鍵字 – 2011-02-04 23:42:57