【问题标题】:mvc action method doesn't recognize parametermvc 动作方法无法识别参数
【发布时间】:2013-02-14 12:15:51
【问题描述】:

我正在尝试使用确认电子邮件设置会员提供商。 User 使用 memb 注册成功。提供者。

注册后,将发送一封确认电子邮件,其中包含userProviderKey,用于批准用户。链接发送如下

http://localhost:48992/Account/Verify/e37df60d-b436-4b19-ac73-4343272e10e8

用户必须点击使用密钥(providerUserKey)发送的链接,问题是这个密钥在调试模式下甚至不显示为参数

// in debug providerUserKey is null
public ActionResult Verify(string providerUserKey)
{    
}

可能是什么问题?

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    如果你有 Global.asax.cs 文件的路由配置为:

              routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional });
    

    您可以看到它有id 参数作为可选参数。因此,如果查询字符串被识别为id,那么它将具有您传递的值。

    id 更改为providerUserKey 以便为您完成这项工作。

          routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{providerUserKey}", // URL with parameters
                new { controller = "Home", action = "Index",providerUserKey=UrlParameter.Optional });
    

    或将默认可选参数保留为id,并将providerUserKey 作为附加查询字符串参数传递。

    这样说:

         @Html.Action("","",new { providerUserKey="e37df60d-b436-" })
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      尝试将查询更改为

      http://localhost:48992/Account/Verify?providerUserKey=e37df60d-b436-4b19-ac73-4343272e10e8
      

      您的ActionResult 正在URL 中查找此参数

      【讨论】:

      • 谢谢,以为是发帖请求
      【解决方案3】:

      默认 MVC 路由是 {Controller}/{Action}/{Id} 因此,如果参数名称是 Id,它会识别它...

      将其更改为以下,它将起作用。

      public ActionResult Verify(string id)
              {    
              }
      

      如果您不想更改参数名称,则可以在 global.asax 文件中添加以下路由,它将正常工作。

      routes.MapRoute("MyRouteName","{Controller}/{action}/{providerUserKey}")
      

      如果需要,您还可以将默认值传递给它,因为您的路径是预定义的。 干杯

      【讨论】:

        【解决方案4】:

        除非您在全局 asax 中指定了规则,否则您的 url 应该是这样的

        http://localhost:48992/Account/Verify?providerUserKey=e37df60d-b436-4b19-ac73-4343272e10e8
        

        如果您想使用上述格式,您需要在 global.asax 中映射一条新路线

        routes.MapRoute(
            // Route name
            "routename",
            // Url with parameters
            "Account/Verify/{providerUserKey}/",
            // Parameter defaults
            new { controller = "Account", action = "Verify" }
            );
        

        【讨论】:

        • 查询有小bug,验证后没有/
        猜你喜欢
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 2019-07-14
        • 2013-08-09
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多