首页 > 解决方案 > 单击电子邮件验证链接时,方法输入中的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 }
        );
    }
}

标签: asp.net-mvc-5registrationemail-verification

解决方案


为了实现您需要的内容,您必须将操作参数名称更改为 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 }
        );

    }

请注意,路由定义的顺序非常重要。

现在运行应用程序时,您将获得以下结果: 调试结果

在浏览器内部: 在此处输入图像描述


推荐阅读