2013-02-14 109 views
0

我在尝试使用确认电子邮件设置成员资格提供程序。 User已成功注册使用memb。供应商。mvc操作方法无法识别参数

注册后,发送确认邮件userProviderKey用于批准用户。链接发送如下

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

用户必须点击与关键(providerUserKey)发送的链接,问题是这样的关键甚至没有在调试模式下显示为参数

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

可以采取什么问题?

回答

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-" }) 

希望它可以帮助

1

除非你specifed在全局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" } 
    ); 
+0

轻微错误的查询,没有/后的验证 – CR41G14 2013-02-14 12:19:08

+0

TA!(错误的帖子!) – Liam 2013-02-14 12:20:08

1

尝试更改查询

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

ActionResult正在寻找这个parame之三在URL

+0

POST?为什么?????? – Liam 2013-02-14 12:18:53

+0

ta!............ – Liam 2013-02-14 12:19:49

+0

谢谢你认为这是一个帖子请求 – CR41G14 2013-02-14 12:20:40

1

默认MVC路由是{控制器}/{行动}/{ID} 因此,它认识它,如果该参数的名称是编号......

将其更改为以下,也将努力。

public ActionResult Verify(string id) 
     {  
     } 

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

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

您还可以根据需要为您的路径是通过预定义的默认值吧。 干杯