2010-06-29 41 views
2

在我的AccountController類我有以下幾點:MVC 2.0路由問題 - URL參數不承認

public ActionResult Verification(string userGuid) 
{ 

    Debug.WriteLine(userGuid); 
... 

在我的Global.asax我:

routes.MapRoute(
    "AccountVerification", 
    "{controller}/{action}/{userGuid}", 
    new { controller = "Account", action = "Verification", userGuid = UrlParameter.Optional } 
); 

當我去http://localhost/Account/Verification/123 .. 。theres沒有調試輸出...它不能識別參數 - 這是我的問題。不知道我錯過了什麼。

我確實希望這個參數是可選的...如果它沒有設置,那麼我返回一個不同的視圖。

編輯: 當我在驗證功能放置Debug.WriteLine("hello world");,它輸出它,因此路由出現去正確的函數。

再次編輯: 默認控制器仍然存在,但我不認爲,因爲它使用了不同的控制器,這將打擊該路由/動作

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

回答

4

你給的路線我們應該匹配這個 - 你在上面定義了哪些其他路線?它可能正在被不同的路線拾起。

+0

不知道如何將其他路線拾起。 Theres在我的AccountController中沒有使用名稱Verification定義其他操作。我可以確認它正在打擊我的Verification功能,只是爲userGuid輸出一個空字符串。 – 2010-06-29 15:55:57

+0

您是否已經在{controller}/{action}/{id}中保留了默認路由,並且會將您的「123」映射到「id」參數?如果是這樣,因爲它沒有被定義爲你的方法的一個參數,它只會在路由數據中傳入「123」並將userGuid留空。 – 2010-06-29 16:00:56

+0

是的,默認的也在那裏......但是由於它的定義使用了不同的控制器(主頁)和動作(索引),我以爲它不會使用它。 – 2010-06-29 16:05:54

0

把這個定義放在頂部,看看它是否仍然不起作用。調試路線的第一步

+0

你是否包含代碼?請格式化,以便我可以看到它。 – 2010-06-29 16:00:17

+0

不,我沒有。我的意思是不要把你的路由定義放在你有的任何其他地方(如果有的話)。這幫助我調試了幾次問題 – BritishDeveloper 2010-06-29 16:13:30