【发布时间】:2012-08-23 09:24:54
【问题描述】:
我创建了这条路线:
routes.MapRoute( _
"Pages", _
"Pages/{id}/{title}", _
New With {.controller = "Home", .action = "Pages", .id = UrlParameter.Optional, .title = UrlParameter.Optional} _
)
然后我在“主页”控制器中创建了以下“页面”操作:
Function Pages(Optional ByVal id = 0, Optional ByVal title = "") As ActionResult
Dim db As NavDbContext = New NavDbContext
Dim page = db.Tbl_Navigations.Where(Function(p) p.NAV_ID = id)
If (page.Any) Then
Dim _title = page.Single.NAV_Element.ToString
Dim content = page.Single.NAV_Content.ToString
ViewBag.Title = _title
ViewBag.Content = content
End If
Return View()
End Function
当我导航到 ~/Pages/8/MyPage(这是我数据库中的有效 ID)时,它显示“找不到资源”。我怎样才能正确路由呢?谢谢。
【问题讨论】:
-
你的控制器方法执行了吗?如果是,则说明您的路线没有问题。如果不是,请使用 Phil Haack 的 Route Debugger 找出您的请求实际到达的路由。
-
你安装了路由调试器吗?你的动作正在执行吗?这是您路由表中唯一的路由吗?这条特定路线与您可能拥有的其他路线一起放置在哪里?
-
我明天会试用 Phil Haack 的 Route Debugger 并告诉你。除了 MVC 附带的默认
{controller}/{action}/{id}之外,这是我创建的唯一路由。自定义路由放置在Global.asax文件的 RegisterRoutes 方法中的默认路由下方。 -
路由按定义顺序匹配。尝试先放置
"Pages"路由,然后再放置default {controller}/{action}/{id}路由。 -
@nemesv:谢谢,您的评论似乎解决了问题。
标签: asp.net-mvc vb.net asp.net-mvc-3