asp.net-mvc-5 - 单击电子邮件验证链接时,方法输入中的activationCode为空
问题描述
以上帝的名义
大家好。我正在 VS 2017 中为我的 mvc 5 网站创建注册。其中包含电子邮件确认。激活的 URL 链接将在电子邮件中完整接收。当我单击时,它可以正常工作,并且它恰好在正确的 ActionMethod 上到达我的控制器,但我不知道为什么activationCode 为空!:| 在它正常工作之前,我的意思是激活码不为空。我不知道它发生了什么!
任何帮助将不胜感激。
编辑:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Password",
url: "{controller}/{action}/{passwordResetCode}",
defaults: new { controller = "Authentication", action = "ResetPassword" }
);
routes.MapRoute(
name: "Activation",
//url: "{controller}/{action}/{activationCode}",
url: "Authentication/VerifyAccount/{activationCode}",
defaults: new { controller = "Authentication", action = "VerifyAccount" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
解决方案
为了实现您需要的内容,您必须将操作参数名称更改为 id 或者您可以向 RouteConfig 添加额外的路由,如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Activation",
url: "{controller}/{action}/{activationCode}",
defaults: new { controller = "Authentication", action = "VerifyTheAccount" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
请注意,路由定义的顺序非常重要。
推荐阅读
- excel - Excel 表单:VBA 中的搜索工具我无法从数据表中搜索日期
- json - RawPostException:从请求的数据流中读取后,您无法访问正文
- facebook - Facebook Pixel:Facebook 分析中的内容视图事件“价值”是什么意思?
- multithreading - 詹金斯管道中的多线程
- javascript - 镀铬扩展
- reactjs - Exporting a selected row to PDF in react kendo grid
- flutter - 如何解决flutter build apk错误“无法向守护进程发送消息”
- python - 如何将 Pandas 安装到特定的 python 安装
- flutter - 如何在 Firebase 上更改时自动更新变量
- python - reset_index(drop=True, inplace=True) 不工作