-
我通常使用区域来处理这个问题。
var url = Url.Action("Index", "Home", new {Area = "Myarea"});
var url = Url.Action("Index", "Home", new {Area = "area2"});
-
如果您喜欢这样添加其他项目,您可以使用自定义 ViewEngine。
这样首先添加这样的路由规则:
routes.MapRoute(
name: "app",
url: "{application}/{controller}/{action}/{id}",
defaults: new {application = "MyApplication1", controller = "Panel", action = "Index", id = UrlParameter.Optional }
);
秒:
添加你的应用程序的虚拟路径:
public class CustomAreaViewEngine : VirtualPathProviderViewEngine
{
public CustomAreaViewEngine()
{
MasterLocationFormats = new string[]
{
"~/Views/{1}/{0}.master",
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.master",
"~/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.master",
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.master",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/{2}/Views/{1}/{0}.master",
"~/Areas/{2}/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/{2}/Views/Shared/{0}.master",
"~/Areas/{2}/{2}/Views/Shared/{0}.cshtml",
"~/{2}/Views/{1}/{0}.master",
"~/{2}/Views/{1}/{0}.cshtml",
"~/{2}/Views/Shared/{0}.master",
"~/{2}/Views/Shared/{0}.cshtml",
"~/{2}/{2}/Views/{1}/{0}.master",
"~/{2}/{2}/Views/{1}/{0}.cshtml",
"~/{2}/{2}/Views/Shared/{0}.master",
"~/{2}/{2}/Views/Shared/{0}.cshtml",
};
ViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/Views/Shared/{0}.ascx",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/{2}/Views/{1}/{0}.aspx",
"~/Areas/{2}/{2}/Views/{1}/{0}.ascx",
"~/Areas/{2}/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/{2}/Views/Shared/{0}.aspx",
"~/Areas/{2}/{2}/Views/Shared/{0}.ascx",
"~/Areas/{2}/{2}/Views/Shared/{0}.cshtml",
"~/{2}/Views/{1}/{0}.aspx",
"~/{2}/Views/{1}/{0}.ascx",
"~/{2}/Views/{1}/{0}.cshtml",
"~/{2}/Views/Shared/{0}.aspx",
"~/{2}/Views/Shared/{0}.ascx",
"~/{2}/Views/Shared/{0}.cshtml",
"~/{2}/{2}/Views/{1}/{0}.aspx",
"~/{2}/{2}/Views/{1}/{0}.ascx",
"~/{2}/{2}/Views/{1}/{0}.cshtml",
"~/{2}/{2}/Views/Shared/{0}.aspx",
"~/{2}/{2}/Views/Shared/{0}.ascx",
"~/{2}/{2}/Views/Shared/{0}.cshtml",
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx",
"~/Views/Shared/{0}.cshtml"
};
PartialViewLocationFormats = ViewLocationFormats;
}
你应该改变 global.asax :
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomAreaViewEngine());
}
最后你应该在主应用程序命名空间中实现你的控制器。
还需要这样解释吗?
如果您愿意,您可以开发 CustomAreaViewEngine,将您的应用程序放入自定义目录,如 MyModules。