【发布时间】:2010-12-20 10:19:59
【问题描述】:
为什么默认工厂不会返回控制器的全名(带有命名空间)? 我正在使用服务定位器和 autofac。
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
namespace Application.Core.MVC
{
public override IController CreateController(System.Web.Routing.RequestContext requestContext, string **controllerName**)
{
return ServiceLocator.Current.GetInstance<IController>(controllerName);
}
}
我有两个家庭控制器(一个在区域博客下)
controllerName 在上面的代码中只返回没有完整限定名的“Home”。 当我尝试为依赖注入注册控制器的名称时,这会产生一个问题。 这是我现在根据这种情况注册控制器的方法。即使这样也毫无例外地调出页面。但是当我访问http://localhost/Home 时,两个控制器都会被调用。
foreach (var tp in currentAssemblyControllersTypes)
builder.Register(tp).FactoryScoped().Named(tp.Name.Replace("Controller", ""));
有人可以帮忙吗?谢谢。
【问题讨论】:
标签: asp.net-mvc model-view-controller inversion-of-control areas