我创建了这条路线:
routes.MapRoute( _
"Pages", _
"Pages/{id}/{title}", _
New With {.controller = "Home", .action = "Pages", .id = UrlParameter.Optional, .title = UrlParameter.Optional} _
)
然后我在“Home”控制器中创建了以下“Pages”动作:
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)时,它说:“无法找到资源。”我怎样才能正确布线?感谢。
答案 0 :(得分:3)
路线中不能有多个UrlParameter.Optional
,且可选参数必须是路线中的最后一个参数。从路线的ID部分移除UrlParameter.Optional
。
routes.MapRoute( _
"Pages", _
"Pages/{id}/{title}", _
New With {.controller = "Home", .action = "Pages", .title = UrlParameter.Optional})
控制器操作方法
Function Pages(ByVal id As Integer, Optional ByVal title = "") As ActionResult
如果此路由需要这两个参数,则您不需要将任何参数指定为可选参数,以确保该特定路由仅处理 它应该的请求。
routes.MapRoute( _
"Pages", _
"Pages/{id}/{title}", _
New With {.controller = "Home", .action = "Pages"})
控制器操作方法
Function Pages(ByVal id As Integer, ByVal title As String) As ActionResult