任何人都知道是否可以将HomeController和Home相关视图移动到Areas目录中?
我正在努力让我的根目录保持良好和干净,并且如果可以的话,避免使用〜/ Views和〜/ Controllers目录。此外,我可以看到它导致一些混乱,因为必须解释这些根文件夹仅用于主页内容,而其他所有内容都存在于Areas文件夹中。我想这不符合我的组织意识。
我最接近的是使用以下内容进行我的家庭区域路线注册:
context.MapRoute(
"Home_default",
"Home/{action}/{id}",
new { controller="Home", action = "index", id = UrlParameter.Optional }
);
......但这并不仅仅是“www.mydomain.com/”。为此,我需要告诉Global.asax中的“catch all”路由以某种方式将请求发送到我的Home区域。简单地将area =“Home”添加到路径数据不起作用。对“/”的请求仍在我的根目录中查找HomeController和Views。
有什么想法吗?
答案 0 :(得分:0)
在应用路由之前,IIS可能会在请求URL中添加“default.aspx”或某些默认文档名称,在这种情况下,您的示例将无效。 (这可以在IIS中配置。)
您需要这样的路线
context.MapRoute(
"Home_root"
,"/"
,new { controller="Home", action="index", id=UrlParameter.Optional }
);
但是,当然,路线不能以“/”,“〜”等开头。
或
context.MapRoute(
"Home_root"
,"default.aspx{*parameters}" /// or .htm, .asp, .html or whatever IIS may be adding
,new { controller="Home", action="index", id=UrlParameter.Optional }
);
HTH。匆忙,所以我没有尝试编译任何这个。
答案 1 :(得分:0)
// These additions allow me to route default requests for "~/" to the "home" area
engine.ViewLocationFormats = new string[] {
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Areas/{1}/Views/{1}/{0}.aspx", // new
"~/Areas/{1}/Views/{1}/{0}.ascx", // new
"~/Areas/{1}/Views/{0}.aspx", // new
"~/Areas/{1}/Views/{0}.ascx", // new
"~/Views/{1}/{0}.ascx"
};