我正在使用像Rob Conery那样的MVC店面的结构图,我有一个AdminController,所以我只需输入:
website/Admin/action
但如果我拼错控制器名称,我会收到以下错误:
异常详细信息:System.ArgumentNullException:Value不能为null.参数名称:key
此行发生错误:
Controller controller = ObjectFactory.GetInstance(controllerType) as Controller;
有没有人对我如何处理这个错误有任何想法,或者根本不允许它发生,也许只是转到404页面?
提前干杯
问题是如果没有具有预期类型名称的控制器(即,如果用户键入" Amdin ",则ControllerFactory基类将查找" Amdin控制器"并且将找不到它,但仍将调用您的覆盖方法).在这种情况下,controllerType变量将为null.所以你可以在你引用的行之前检查它为null,然后(如果它为null):
A)实施拼写修正,例如cfeduke建议
或者B)简单地抛出一个状态代码为404的HttpException(这应该会导致你正在寻找的404错误).
注意:如果你进行了拼写纠正,你应该做一个Response.Redirect到新的URL,而不是只是静默加载正确的控制器,这样地址栏改变以反映拼写纠正