2010-06-29 42 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