C# mvc行动方法没有';不识别参数

C# mvc行动方法没有';不识别参数,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在尝试使用确认电子邮件设置会员资格提供商用户已使用memb成功注册。提供者 注册后,将发送一封带有userProviderKey的确认电子邮件,用于批准用户。链接发送如下 http://localhost:48992/Account/Verify/e37df60d-b436-4b19-ac73-4343272e10e8 用户必须单击随键发送的链接(providerUserKey),问题是该键在调试模式下甚至不会显示为参数 // in debug providerUserKey is nul

我正在尝试使用确认电子邮件设置会员资格提供商<代码>用户已使用memb成功注册。提供者

注册后,将发送一封带有
userProviderKey
的确认电子邮件,用于批准用户。链接发送如下

http://localhost:48992/Account/Verify/e37df60d-b436-4b19-ac73-4343272e10e8
用户必须单击随键发送的链接(providerUserKey),问题是该键在调试模式下甚至不会显示为参数

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

有什么问题吗?

除非您在全局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" }
    );

除非您在全局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" }
    );

尝试将查询更改为

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

您的
ActionResult
正在
URL

中查找此参数,请尝试将查询更改为

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

您的
ActionResult
正在
URL

中查找此参数默认的MVC路由为{Controller}/{Action}/{Id} 因此,如果参数名为Id,则可以识别它

将其更改为following,它将工作

public ActionResult Verify(string id)
        {    
        }
但是,如果您不想更改参数名称,那么可以在global.asax文件中添加以下路由,它将正常工作

routes.MapRoute("MyRouteName","{Controller}/{action}/{providerUserKey}")
如果需要,还可以将默认值传递给它,因为路径是预定义的。
Cheers

默认的MVC路由是{Controller}/{Action}/{Id} 因此,如果参数名为Id,则可以识别它

将其更改为following,它将工作

public ActionResult Verify(string id)
        {    
        }
但是,如果您不想更改参数名称,那么可以在global.asax文件中添加以下路由,它将正常工作

routes.MapRoute("MyRouteName","{Controller}/{action}/{providerUserKey}")
如果需要,还可以将默认值传递给它,因为路径是预定义的。
如果您将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
作为附加的querystring参数传递

这样说:

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

如果您将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
作为附加的querystring参数传递

这样说:

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

希望它有帮助

查询中的轻微错误,否/在验证后查询中的轻微错误,否/在验证后感谢认为这是一个post请求感谢认为这是一个post请求