来自错误区域的MVC控制器正在解决

时间:2014-12-10 21:08:23

标签: asp.net-mvc

/Areas/Contacts/Controllers

中给出一个PhoneCallListController

使用非常标准的ControllerFactory

protected override IController GetControllerInstance(System.Web.Routing.RequestContext, requestContext, System.Type controllerType)
{
  if (controllerType == null) return base.GetControllerInstance(requestContext, controllerType);
  return (IController) ObjectFactory.GetInstance(controllerType);
}

http://localhost:2663/PhoneCallList

发出请求时

传入的controllerType是     base = {Name = "PhoneCallListController" FullName = "MyApp.Web.Areas.Contacts.Controllers.PhoneCallListController"

而不是我期待的null。我希望会发生404,但是运行时很乐意为这个控制器提供一个实例,但是因为The view 'Index' or its master was not found...(这是有意义的)而失败了。

相反,当向http://localhost:2663/AControllerThatDoesntExsit发出请求时,我会传入一个null(如预期的那样)并最终得到一个404(也是预期的)。

我是否有错误的配置?或者requestContext中是否有任何内容我应该查看以确保控制器和请求信息中的区域匹配?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是标准的ASP.NET MVC行为。控制器的默认操作是Index()方法。

请参阅Adding a Controller

有关修改默认操作的说明,请参阅this article