我有基本的主/细节视图与默认的ASP.NET MVC路由一起工作;但是我想构建一些像这样的URL:
/Class/Details/5 -- General Detail view [Working]
我不确定(并且我不依赖于此URL格式,只是大致相同的内容。)
/Class/5/Details/Logs -- Detail View with Logs
/Class/5/Details/Status -- Detail View with current Status
另一种说法是这样的:
/{controller}/{id}/{controllerSpecificMaster}/{action}/
我试图避免的是,使用一堆视图将我的Views \ Class目录混乱,这些视图基本上都是详细信息视图的衍生物。
我使用的是ASP.NET MVC 1和.NET 3.5 SP1。
答案 0 :(得分:1)
你需要做的第一件事是你的路线。您可能已经这样做了,但是如果还没有,这里有一个路径条目可以处理您的自定义路线需求:
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()方法。