2009-11-16 92 views
3

我搜索并阅读了我可以在这里和谷歌找到的所有问题,我似乎无法找到答案!Asp.Net MVC错误的URL由Url.Action生成!

在问题的溃败是这样的:

routes.MapRoute("Admin - Change Password", "Admin/ResetPassword/{UserId}", New With {.controller = "Admin", .action = "ResetPassword", .UserId = ""}) 

的URL它产生的是: /管理/ UserAdmin

这是页面的url.action上。不知道这件事是否重要。

当我使用路由调试器时,它显示了我希望它生成的Url匹配我在地址栏中输入的URL。

真管理员/ ResetPassword/{用户Id}控制器=管理员,动作= ResetPassword,用户id =

它匹配唯一的其他路线为:

真{控制器}/{行动}/{ID}控制器=家庭,行动=指数,ID =

真{*}包罗万象(空)

的{控制器}/{行动}/{ID}路线是最后一个,所以它不应该干扰。

任何想法?

编辑:助手的代码:

<%Url.Action("ResetPassword", "Admin", new with {.UserId= u.userId}) %> 
+0

您可以发布您正在使用的(HtmlHelper)方法调用生成url吗? – Charlino

回答

7

请勿使用Action/ActionLink为指定的路由生成URI。改为使用RouteLink/RouteUrl。这是更快,并且它从来没有找不到你想要的路线。完整说明here

+1

谢谢。用这个解决了这个问题! <%= Url.RouteUrl(“Admin - 更改密码”,与{.UserId = u.UserId}一起使用)%>“> – Patricia

0

所以我认为问题是,你没有得到针对您预期的看法,当你运行应用程序?

您使用的是哪个版本的IIS?如果您使用XP/IIS 5.1,您是否确定要添加通配符映射?这是IIS 5.1的常见问题。您可以参考链接here

+0

我不认为这是问题。我有很多其他路线映射,正常工作。这只是一个特定的行为不当行为。 – Patricia