MikeSW is close about the route,但它听起来像你不希望加盟商页面与公司页面共享任何控制器。我有一对夫妇其他的想法太:
routes.MapRoute(null, // do not name your routes, they are "magic strings"
"{tenant}/{controller}/{action}",
new
{
// strongly type controller, action, and area names using T4MVC
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Index,
// it sounds here like you want this controller for franchisees only,
// so corporate pages will use other controllers. if this is the case,
// tenant="default" // require the parameter by not supplying a default
});
的理由不来命名你的路由是因为不点名地迫使你在某些HTML辅助和控制方法,使用某些过载。 RedirectToRoute
,@Html.RouteLink
和@Url.RouteUrl
等方法中的很多重载将路由名称作为第一个参数。通过省略路由名称,这迫使我们使用仅依赖路由参数和HTTP方法的重载来解析控制器和操作。 (T4MVC在这里也很有帮助,因为它允许我们为这些方法的参数强制键入区域,控制器和操作名称。)
MVC将自动在呈现视图的URL中使用“环境”路由参数。所以,如果你在URL domain.com/atl
和要链接到domain.com/atl/stuff
,可以输出这样一个超级链接:
@Html.RouteLink("Stuff", new
{
// this will render a link with the URL domain.com/atl/stuff
controller = MVC.Stuff.Name,
action = MVC.Stuff.ActionNames.Index,
// you do not need to include franchisee
})
(如果你想渲染只是URL为一个普通的HTML <a>
标签的href参数使用@Url.RouteUrl
代替)
在另一方面,如果你想从一个加盟商网站到另一条链路,你就必须指定专营参数:
@Html.RouteLink("Another franchisee in this state", new
{
// this will render a link with the URL domain.com/macon
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Index,
franchisee = "macon"
})
T4MVC似乎没有为我工作这么热。当试图引用控制器中的视图时,它给了我一个无效的参数错误。 – Nozoku 2012-04-13 16:47:58
奇怪的是,视图在T4MVC中没有参数。它们只是MVC对象的静态属性。在这里张贴另一个问题,有人会帮助你。 – danludwig 2012-04-13 17:59:35
我最终修复了它。我不正确地引用它。我试图在另一个控制器中引用一个视图,我不知道如何执行它的语法,所以我尝试了直到我认为我找到了一些可行的方法,并且这是一种错误的方法。 – Nozoku 2012-04-17 02:47:43