MVC 4 路由前缀和 Action url 生成问题
MVC 4 route prefix and Action url generation issue
我对视图中@Url.Action 生成的 URL 有疑问。我试图在 1 个 MVC 应用程序(modulair 应用程序,每个模块都有一个前缀和一个 Home 控制器)中使用多个具有相同名称的控制器。我正在使用带有命名空间的路由来完成路由并且工作正常。视图中 Url.Action 生成的 URL 存在前缀不正确的问题。这是我的路线定义:
//Default added for url building with section, but makes no difference
routes.MapRoute(
name: "Default",
url: "{section}/{controller}/{action}/{id}"
);
routes.MapRoute(
name: "Test1",
url: "Test1/{controller}/{action}/{id}",
defaults: new { section = "Test1", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MVCTest.Controllers.Test1" }
);
routes.MapRoute(
name: "Test2",
url: "Test2/{controller}/{action}/{id}",
defaults: new { section = "Test2", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MVCTest.Controllers.Test2" }
);
这有效,并且在浏览 /Test1 和 /Test2 时解析了正确的控制器。现在我有一个简单的视图(索引,用于两个操作):
Action url: @Url.Action("Action")
但结果总是'Action url: /Test1/Home/Action' 为什么?我尝试不使用默认路由,但结果相同(我为 url 的 {section} 部分添加了默认路由)。
如果我只使用默认路由并使用不同的控制器名称(或使用该部分确定命名空间的自定义控制器工厂),则操作 url 的生成是正确的。我可以做些什么来修复我的路线设置中的 Url 代吗?
这是您正在创建的区域吗?如果是这样的话,像下面这样的东西就可以了
@Url.Action("Action", "Controller", new { Area = "Test1" }, null)
下面的区域指南如果这个 link 坏了一个简单的 google 就足够了
http://www.itorian.com/2013/10/area-in-mvc-5-with-example-step-by-step.html
我对视图中@Url.Action 生成的 URL 有疑问。我试图在 1 个 MVC 应用程序(modulair 应用程序,每个模块都有一个前缀和一个 Home 控制器)中使用多个具有相同名称的控制器。我正在使用带有命名空间的路由来完成路由并且工作正常。视图中 Url.Action 生成的 URL 存在前缀不正确的问题。这是我的路线定义:
//Default added for url building with section, but makes no difference
routes.MapRoute(
name: "Default",
url: "{section}/{controller}/{action}/{id}"
);
routes.MapRoute(
name: "Test1",
url: "Test1/{controller}/{action}/{id}",
defaults: new { section = "Test1", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MVCTest.Controllers.Test1" }
);
routes.MapRoute(
name: "Test2",
url: "Test2/{controller}/{action}/{id}",
defaults: new { section = "Test2", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MVCTest.Controllers.Test2" }
);
这有效,并且在浏览 /Test1 和 /Test2 时解析了正确的控制器。现在我有一个简单的视图(索引,用于两个操作):
Action url: @Url.Action("Action")
但结果总是'Action url: /Test1/Home/Action' 为什么?我尝试不使用默认路由,但结果相同(我为 url 的 {section} 部分添加了默认路由)。
如果我只使用默认路由并使用不同的控制器名称(或使用该部分确定命名空间的自定义控制器工厂),则操作 url 的生成是正确的。我可以做些什么来修复我的路线设置中的 Url 代吗?
这是您正在创建的区域吗?如果是这样的话,像下面这样的东西就可以了
@Url.Action("Action", "Controller", new { Area = "Test1" }, null)
下面的区域指南如果这个 link 坏了一个简单的 google 就足够了
http://www.itorian.com/2013/10/area-in-mvc-5-with-example-step-by-step.html