我正在尝试使用确认电子邮件设置会员提供商。使用memb成功注册User
。供应商。
注册后,正在发送一封确认电子邮件,其中userProviderKey
用于批准用户。链接发送如下
http://localhost:48992/Account/Verify/e37df60d-b436-4b19-ac73-4343272e10e8
用户必须单击使用密钥发送的链接(providerUserKey),此密钥甚至不会在调试模式下显示为参数
// in debug providerUserKey is null
public ActionResult Verify(string providerUserKey)
{
}
可能是什么问题?
答案 0 :(得分:1)
除非你在全局的asax中指定了一条规则,否则你的网址应该是
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" }
);
答案 1 :(得分:1)
尝试将查询更改为
http://localhost:48992/Account/Verify?providerUserKey=e37df60d-b436-4b19-ac73-4343272e10e8
您的ActionResult
正在URL
答案 2 :(得分:1)
默认MVC路由为{Controller} / {Action} / {Id} 因此,如果参数名称为Id ...
,则会识别它将其更改为以下内容即可。
public ActionResult Verify(string id)
{
}
如果您不想更改参数名称,那么您可以在global.asax文件中添加以下路由,它将正常工作。
routes.MapRoute("MyRouteName","{Controller}/{action}/{providerUserKey}")
如果需要,您也可以将默认值传递给它,因为您的路径是预定义的。 干杯
答案 3 :(得分: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-" })
希望有所帮助