繁体   English   中英

在ASP.NET MVC中更正嵌套/路由视图的术语和示例

[英]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/issueswww.example.org/issues/project或只是www.example.org/issues
通过这种方式,您可以轻松地将issues控制器和issues所有内容发布到issues后,您可以通过该字符串确定需要列出所有问题的资源。 它的示例路线可以是

"{issues}/{*resource}",new{controller="issues"}


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM