2013-02-14 52 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}") 

您還可以根據需要爲您的路徑是通過預定義的默認值吧。 乾杯