我正在使用 SimpleMvcCaptcha。我的环境有不同的区域。我想在不同的区域以不同的形式使用这个验证码。
这个模块需要一个名为 Captcha 的控制器和一个方法。如果我在使用它的同一区域创建此控制器,则没有问题,但如果我在不同区域使用它,则会收到此错误:
The controller for path '/AreaName/Captcha/GetImage/15fe4de1-fd46-4f2f-a0d1-74c397bd8365' could not be found.
我怎么解决这个问题?我认为可以解决此问题的一种方法是删除路由注册中的区域,例如
routes.MapRoute(
"Default_Captcha",
"AreaName/Captcha/{action}/{id}",
new { area = string.Empty, controller = "Captcha", action = "GetImage", id = UrlParameter.Optional });
但我仍然遇到同样的错误。
有什么方法可以从链接中删除区域名称?
- - 更新
Captcha 的操作需要一个控制器(具有一种获取验证码图像的方法的控制器)。
我想以在 MyArea 中实现的形式使用它。该表单与名为 MyController 的控制器相关。
如果我在此区域中创建一个 CaptchaController 并在其中创建所需的代码,则验证码运行良好(显示了验证码图像)。
现在假设我有另一个区域(MyArea2),在这个区域中,我有一个名为 MyController2 的控制器,那么我在这个区域也需要一个新的 Captcha 控制器,否则它不会显示图像。
我无法将 CaptchaController 移动到非区号部分,因为没有显示图像。
Captcha 图像的 URL 是(用于与 MyController 相关的视图中使用的 Captcha):
http://mySite/MyArea/Captcha/GetImage/xxxxxxxxxxxx
Captcha 图像的 URL 是(对于与 MyController2 相关的视图中使用的 Captcha):
http://mySite/MyArea2/Captcha/GetImage/xxxxxxxxxxxx
如果我将验证码控制器移动到非区域部分,则上述 url 都不起作用并且不显示图像。
如果我可以将这些 URL 重新路由到以下 URL,那么它们应该可以工作(我可以在非区域部分有一个 Captcha 控制器):
http://mySite/Captcha/getImage/xxxxxxxxxxxxxxxxxxx
我怎样才能做到这一点?