代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

具有“细节子级”的主/细节视图的ASP.NET MVC路由

  •  2
  • Nate CSS Guy  · 技术社区  · 14 年前

    我有基本的主视图/详细视图与默认的ASP.NETMVC路径配合得很好;不过,我想构建一些URL,如下所示:

    /Class/Details/5 -- General Detail view [Working]
    

    /Class/5/Details/Logs -- Detail View with Logs
    /Class/5/Details/Status -- Detail View with current Status
    

    另一种说法是:

    /{controller}/{id}/{controllerSpecificMaster}/{action}/
    

    我试图避免的是,将Views\Class目录与一堆视图混在一起,这些视图基本上都是Details视图的派生视图。

    我使用的是ASP.NETMVC1和.NET3.5SP1。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Byron Sommardahl    14 年前

    你要做的第一件事就是你的路线。您可能已经这样做了,但如果您还没有这样做,这里有一个路由条目可以处理您的自定义路由需求:

    routes.MapRoute("Master_Detail",
                    "{controller}/{id}/{controllerSpecificMaster}/{action}",
                    new { controller = "Class", 
                          action = "Index", 
                          id = UrlParameter.Optional,
                          controllerSpecificMaster = "Details"
                    });
    

    public ActionResult Logs(int id, string controllerSpecificMaster)
    {
        //do something
    
        //return view with master name as argument
        return View("Logs", controllerSpecificMaster);
    }
    

    如果您必须经常这样做,我建议您创建一个自定义视图引擎并重写FindView()方法。