2

我想创建如下路由规则:

www.app.com/project/35/search/89/edit/48 ---> 动作是在项目控制器中编辑

传递的变量应该是 project# (35)、search# (89) 和 edit#(48)

有人可以帮我为此构建一个 routes.MapRout() 吗?

我想使用:

routes.MapRoute(
            "Default",
            "{controller}/{projectid}/search/{searchid}/{action}/{actionid}",
            new { controller = "Home", action = "Edit", projectid = "", actionid = "" }
        );

但是从以前的经验来看,这种类型的 MapRoute 会失败......我只得到了以下格式的东西来工作:

{controller}/{action}/{variable}

任何人都可以给我任何建议吗?谢谢。

4

3 回答 3

1

老实说,听起来你需要让你的 URL 看起来像这样:

www.app.com/project/35?search=89&edit=48&flag=63 

它会让你的喜欢更简单。

于 2009-07-04T00:13:09.813 回答
0

为什么这种格式对你来说失败了?“失败”是什么意思?如果它不起作用,请尝试将您的新 MapRoute 放在默认命令之上 - Routes 集合以 FIFO 方式工作。

@Robert Harvey - 以 Basecamp 为例 - 他们在 URI 中使用了非常相似的方法。我认为这是一种比您建议的更清洁和更好的方法。一旦掌握了路由,它甚至都不是“更简单”。

于 2009-07-09T14:38:52.367 回答
0

使用 ASP.NET MVC 对控制器进行分组

经常出现的一个问题是,在使用 ASP.NET MVC 构建大型应用程序时如何对控制器进行分组。通常,问题被表述为 ASP.NET MVC 是否支持“区域”,这是 Monorail 的一个特性。根据 Monorail 文件,

MonoRail 支持区域的概念,区域是控制器的逻辑组。所有控制器都属于一个区域。默认区域为空(未命名)区域

虽然在 ASP.NET MVC 中没有开箱即用的支持,但可扩展性模型允许构建非常接近的东西。

注册路由

我们要做的第一件事是调用我编写的两个新扩展方法来注册区域的路线。此调用在 Global.asax.cs 的 RegisterRoutes 方法中进行。

routes.MapAreas("{controller}/{action}/{id}", "AreasDemo", new[]{ "Blogs", "Forums" });

routes.MapRootArea("{controller}/{action}/{id}", "AreasDemo", new { controller = "Home", action = "Index", id = "" }); MapAreas 方法的第一个参数是您熟悉和喜爱的路由 URL 模式。我们将在该 URL 前添加一个区域。第二个参数是根命名空间。按照惯例,我们会将“.Areas.AreaName.Controllers”附加到提供的根命名空间,并将其用作我们在其中查找控制器类型的命名空间。

http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

于 2009-07-03T18:52:14.733 回答