Asp.Net MVC中Url.Action生成的URL有误!

3

我搜索并阅读了所有在这里和谷歌上能找到的问题,但似乎找不到答案!

这个问题中的路由器是这样的:

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

生成的URL是: /Admin/UserAdmin
这是url.action所在的页面。不知道这是否重要。
当我使用路由调试器时,它显示了我希望生成的URL与我在地址栏中键入的URL相匹配。
真正的 Admin/ResetPassword/{UserId} 控制器=Admin,操作=ResetPassword,userId=
它匹配的唯一其他路由是:
True {controller}/{action}/{id} controller=Home,action=Index,id=
True {*catchall} (null)
{controller}/{action}/{id}路由是最后一个,因此不应干扰。
有任何想法吗?
编辑:助手的代码:
<%Url.Action("ResetPassword", "Admin", new with {.UserId= u.userId}) %>

你能贴出你正在使用的(HtmlHelper)方法调用来生成URL吗? - Charlino
2个回答

7

不要使用Action/ActionLink来生成命名路由的URI。相反,使用RouteLink/RouteUrl。它更快,并且永远不会找不到你想要的路由。完整的解释在这里


1
谢谢,使用这个解决了问题!<%=Url.RouteUrl("Admin - Change Password", New With {.UserId = u.UserId})%>"> - Patricia

0

所以我猜测问题在于当你运行应用程序时,你没有被重定向到你期望的视图?

你使用的IIS版本是什么?如果你使用的是XP / IIS 5.1,你是否确保添加了通配符映射?这是IIS 5.1常见的陷阱。

你可以参考这个链接here


我不认为那是问题所在。我有很多其他映射路线都能正常工作。只是这一个特定的路线出了问题。 - Patricia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接