0

我创建了这条路线:

    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)时,它显示“找不到资源”。我怎样才能正确路由呢?谢谢。

4

1 回答 1

3

路由中不能有多个UrlParameter.Optional,可选参数必须是路由中的最后一个参数。UrlParameter.Optional从路线的 id 部分中 删除。

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
于 2012-08-28T20:34:44.900 回答