![](/img/trans.png)
[英]ASP.NET MVC Routing for Master / Detail Views with “Detail Children”
[英]Correct terminology and examples for nesting/routing views in ASP.NET MVC
我已经做了一段时间的ASP.NET,并且在MVC(一般)中做的很少,但在ASP.NET MVC框架上做了很多新事,以及在一些事情上的正确术语。
这是我的例子(我正在研究的实际应用程序是不同的,但这是我可以使用的公共示例) - 我想创建一个更简单的Redmine版本,但是在.net中。
我想以这样的方式列出问题:如果我去example.org/issues,我会在所有项目中看到所有问题的列表(类似于http://www.redmine.org/issues )。
但如果我去项目,如example.org/project/issues,我只看到该项目的问题(类似于http://www.redmine.org/projects/redmine/issues )。 这与example.org/project2/issues等相同。
这个的正确用语是什么? 我认为开发人员没有在两个地方重写“问题”代码,他们重用了这些代码。
由于我不知道完全正确的术语,因此很难在ASP.NET MVC世界中找到我可以开始的好例子。 所以第二部分是我在ASP.NET MVC中可以看到的一个例子,它应该如何在Visual Studio中呈现给我?
/ project /下还有其他一些东西,比如设置,细节,日志等,类似于如何导航http://www.redmine.org/projects/redmine/ 。
最后,如果项目不在顶层怎么办? 如同,如果我的应用程序更像是:
example.org/
example.org/projects/
example.org/projects/project1
example.org/projects/project1/issues
example.org/projects/project2
example.org/dashboard/
设置一个叫做你喜欢的控制器(我将使用RedMineController)。
在该控制器中,您将拥有一个名为ListIssues的动作方法。 接受名为ProjectName的参数:
public ActionResult ListIssues(string projectName) {}
最后在global.asax.cs中创建两个路由:
routes.MapRoute(
"Issues Root",
"issues",
new { controller = "RedMine", action = "ListIssues" }
);
routes.MapRoute(
"Project Issues",
"projects/{projectName}/issues",
new { controller = "RedMine", action = "ListIssues" }
);
在ListIssues操作中,检查projectName == null,如果是,则获取所有问题,否则获取特定问题。 第一个路由将传递null,第二个路径将传递URL中的内容。 如果URL中的项目名称无效,请不要忘记抛出404。
希望这可以帮助!
虽然不是一个合适的ans。 但是你可以通过颠倒你的方式来轻松地做你想做的事情。也就是说
而不是做www.example.org/project/issues
做www.example.org/issues/project
或只是www.example.org/issues
通过这种方式,您可以轻松地将issues
控制器和issues
所有内容发布到issues
后,您可以通过该字符串确定需要列出所有问题的资源。 它的示例路线可以是
"{issues}/{*resource}",new{controller="issues"}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.