namespaceMvcAppAreasControllers
{
public class HomeController : Controller
{
public void Index()
{
ResponseWrite(stringFormat(UseNamespaceFallback: {}<br/>
RouteDataDataTokens[UseNamespaceFallback]))
ResponseWrite(stringFormat(Controller Type: {}<br/>
thisGetType()FullName))
}
}
}
现在我们在浏览器中通过匹配的URL(/Admin/Home/Index)来访问Area为Admin的HomeController的Index操作会得到如图所示的HTTP状态为Not Found的错误这就是因为在对Controller类型进行解析的时候是严格按照对应的AreaRegistration所在的命名空间来进行的很显然在这个范围内是不可能找得到对应的Controller类型的(S)
图 Controller和AreaRegistration命名空间不匹配导致的错误
但是如果我们去掉AdminAreaRegistration的命名空间那么将会导致路由变量UseNamespaceFallback的值变为True这会促使Controller激活系统选择后备的命名空间由于整个Web应用中仅仅定义了唯一匹配的MvcAppAreasControllersHomeController很显然这个Controller会被激活如图所示的程序运行结果也说明了这一点(S)
图 去掉AdminAreaRegistration命名空间以采用后备命名空间
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战
[] []