问题
在asp.net mvc中,我在一个解决方案中有两个mvc应用程序,一个是网站,第二个是管理面板。我在网站项目中创建了一个名称为管理员的文件夹,并在网站项目中粘贴管理项目,我现在想要访问管理员部分:
和nopcommerce一样,但我没有得到nopcommerce如何在他们的项目中配置这个东西。
帮帮我
答案 0 :(得分:1)
正如其他人所说,最好使用ares来简化项目,但如果你想让它们分开,我认为你遇到的问题是更新你的路由。
默认情况下,MVC应用程序具有以下路由配置(可在Globals.asax.cs文件中找到):
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
您需要做的是查看您尝试连接的控制器,并为该控制器添加路由。为了举个例子,我假设您的控制器被称为" AdminController":
routes.MapRoute(
name: "AdminController",
routeTemplate: "website/admin/{action}",
defaults: new { controller = "Admin", action = "Index"}
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
此示例显示如何将所需路线 - http://localhost/website/admin - 映射到"索引"行动在" AdminController"宾语。
有关更深入的ASP.Net路由示例,您可以查看文档here
更新:查看相关示例库(NopCommerce)后,看起来他们正在使用显式区域注册。这可以在' src / Presentation / Administration / AdminAreaRegistration.cs'中找到。 :
using System.Web.Mvc;
namespace Nop.Admin
{
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", area = "Admin", id = "" },
new[] { "Nop.Admin.Controllers" }
);
}
}
}
希望这能让您更好地了解这是如何完成的。
答案 1 :(得分:0)
本教程清除了我对如何在asp.net mvc中配置多个项目作为区域的困惑。
http://nileshhirapra.blogspot.no/2012/02/aspnet-mvc-pluggable-application.html?m=1