【问题标题】:MVC3 structure routesMVC3 结构路由
【发布时间】:2012-03-23 18:19:28
【问题描述】:

我的网站结构如下:

(节/子节/页/1..n)

e.g.
News/Current
News/Archive
News/Current/Pages/23
News/Archive/Pages/3

如果用户访问/News,我希望他们默认为 News/Current,否则他们会看到上面的页面。 同样,

Events/Latest
Events/London
Events/Latest/Pages/15
Events/Archive/Pages/4

我已经为新闻和事件设置了控制器,但是如何创建 Actions 和 global.asax MapRoutes 来处理我的结构?

我不想为此使用区域,请使用简单的控制器和操作。一个部分的每个视图都将处理一个带有数据库中 ContentPage 属性的 ViewModel?

所以每个部分都会有一个视图,该视图将填充一个 ContentPage PartialView。

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 routes


    【解决方案1】:

    你有两种选择:

    1. 使用区域
    2. ArchiveLatest 创建路由,这使得Pages 之后的部分成为包含页面的参数。

    更新

    路线:

    routes.MapRoute(
        "MySuperRoute",
        "{controller}/{section1}/{section2}/{id}",
        new { controller = "Home", action = "TheHandlingAction", id = UrlParameter.Optional }
    );
    

    以及行动:

    public ActionResult TheHandlingAction(string section1, string section2, int id)
    {
    }
    

    【讨论】:

    • 谢谢。我不会为此走“区域”路线。对于选项 2,“子节”级别可能有 1..n 个选项,而不仅仅是存档 + 最新,例如伦敦/加的夫等地点。如果可以的话,我需要一个 MapRoute 的例子来处理这些?这就是我与明智的控制器操作一起被卡住以匹配我上面的路线选项的地方?还是我只需要一个 Action,因为它们本质上都是 ContentPage?
    • 任何简单的 MapRoute 示例,对于我想要实现的目标?
    • 将从我的数据库中返回一个 ContentPage,对于我所在的任何部分,id=15。例如News/Current/Pages/23Events/Cardiff/Pages/12。这两个示例都是来自顶级导航的链接页面,例如News/CurrentEvents/Cardiff 分别。要点是 Current 或 Cardiff 可以是任何东西,所以我不想对所有这些使用单独的操作。我需要的是处理它们的路线。所以需要知道如何为我的 2 个选项编写 MapRoute:1)/Section/SubSection 2)/Section/SubSection/Pages/Id - 希望这更清楚?还有与它们一起使用的控制器操作。
    • Current/CarDiff 是动作还是控制器?
    • 两者都不是。如果我传入 News/Current/Cardiff 或 News/Any/Any,我希望调用 News 中的默认操作,它将用户发送到我在操作中决定的任何位置。在这种情况下,新闻/当前。第二种类型:/Section(e.g. News)/SubSection/Pages/Id 我想在 News Controller 中进行 Pages Action,传递 SubSection 和 ID 作为参数。
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2012-05-25
    • 2012-04-08
    • 1970-01-01
    相关资源
    最近更新 更多