입니다. 모듈에 대한 경로를 자동 등록하고 admin에 대한 경로를 등록하려고합니다. 잘등록 경로 유형은 Admin/{controller}/{action}/{id}
public class ModulSetup : BaseModule
{
public override void Setup()
{
this.SetupViewEngine();
this.SetupControllers();
}
public override void SetupRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
string.Empty,
new { controller = "Home", action = "Index" });
}
protected override void SetupViewEngine()
{
ViewEngines.Engines.Add(new CoreViewEngine());
}
protected override void SetupControllers()
{
ControllerBuilder.Current.DefaultNamespaces.Add("SGN.Core.Controllers");
}
}
하지만 관리를 위해, 내가 할 404
public class AdminSetup : BaseModule
{
public override void Setup()
{
this.SetupViewEngine();
this.SetupControllers();
}
public override void SetupRoutes(RouteCollection routes)
{
routes.MapRoute(
"Admin",
"Admin/{controller}/{action}/{id}",
new { controller = "Site", action = "Index" });
protected override void SetupViewEngine()
{
ViewEngines.Engines.Add(new AdminViewEngine());
}
protected override void SetupControllers()
{
ControllerBuilder.Current.DefaultNamespaces.Add("SGN.Core.Admin.Controllers");
}
}
예 작업 모듈 등록 . 나는 404 :(
가 UPDATE 내가 만들려고
이 AreaAwareViewEngine 호 도움이 네게 How to set a Default Route (To an Area) in MVC
쓰기가 아니라 컨트롤러 클래스 사이트를
namespace SGN.Core.Admin.Controllers
{
using System.Web.Mvc;
using SGN.Framework.Controller;
public class SiteController : AdminController
{
public ActionResult Index()
{
return this.View();
}
}
}
이 내가하려고 할 때 http://localhost:777/Admin/Site/ 서버 반환로 이동
업데이트
나는이 URL을 사용해보십시오 http://localhost:777/Admin/Site/Index. 하지만 이건 좋지 않아. 그리고 주인님은 일하지 않습니다.
UPDATE
나는 영역을 사용하는 다른 프로젝트의 체크를 위해 RouteDebugger를 사용합니다. 지역을 사용할 때 추가 할 내용. DataTokens에서 이해하는 방법 3 매개 변수 추가
네임 스페이스 = SGN.Web.Areas.Admin., 지역 = 관리자, UseNamespaceFallback =이
* 거짓 나는 이것이 = SGN.Core.Admin을네임 스페이스를 매개 변수 추가하려고합니다., 지역 = 관리자, UseNamespaceFallback이 = 거짓 *
하지만 도움이되지
UPDATE
는 여기 How to set a Default Route (To an Area) in MVC
내 클래스 AreaRegistration을 작성하는 방법 클래스 AreaAwareViewEngine을 만들어
namespace SGN.Web.Admin
{
using System.Web.Mvc;
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 {area="Admin", controller = "Site", action = "Index", id = UrlParameter.Optional }
);
}
}
}
그리고 AdminViewEngin을 만듭니다. 전자 AreaAwareViewEngine
에서namespace SGN.Core.Admin
{
using System.Web.Mvc;
using SGN.Framework;
public class AdminViewEngine : AreaAwareViewEngine
{
public AdminViewEngine()
{
AreaMasterLocationFormats = new[] { "~/Admin/Views/Shared/admin.cshtml" };
AreaPartialViewLocationFormats = new[] { "~/Admin/Views/{1}/Partials/{0}.cshtml", "~/Admin/Menu/{0}.cshtml" };
AreaViewLocationFormats = new[] { "~/Admin/Views/{1}/{0}.cshtml", "~/Admin/Menu/{0}.cshtml" };
ViewLocationFormats = AreaViewLocationFormats;
PartialViewLocationFormats = AreaPartialViewLocationFormats;
MasterLocationFormats = AreaMasterLocationFormats;
}
protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
{
return new RazorView(controllerContext, partialPath, null, false, FileExtensions);
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
if (string.IsNullOrEmpty(masterPath))
{
masterPath = AreaMasterLocationFormats[0];
}
var view = new RazorView(controllerContext, viewPath, masterPath, true, FileExtensions);
return view;
}
}
}
는 일 내가 http://localhost:777/Admin/Site/에 가서 내가 뭔가 간단한 주문 문제가 될 수 http://localhost:777/Admin
RouteCollection에서 Admin에 대한 Route는 두 번째 순위입니다. RouteDebugger를 사용하여 경로를 테스트 할 수 없습니다. 왜냐하면 return 404 – Greg
나는 폴더 영역을 사용하고 싶지 않기 때문에 영역을 사용하지 않는다. – Greg