【发布时间】:2015-03-29 23:23:47
【问题描述】:
我正在尝试了解路由配置在 MVC 5 中的工作原理。
我的应用程序具有以下结构:
BaseCRUDController
public class BaseCRUDController<TEntity, TEntityViewModel> : Controller
where TEntity : class
where TEntityViewModel : class
{
private readonly IBaseService<TEntity> baseService;
public BaseCRUDController(IBaseService<TEntity> service)
{
this.baseService = service;
}
[HttpGet]
public virtual ActionResult Index()
{
IList<TEntityViewModel> entities = baseService.FindFirst(10).To<IList<TEntityViewModel>>();
return View(entities);
}
}
CountriesController
[RouteArea("management")]
[RoutePrefix("countries")]
public class CountriesController : BaseCRUDController<Country, CountryViewModel>
{
private readonly ICountryService service;
public CountriesController(ICountryService service)
: base(service)
{
this.service = service;
}
}
我想做的很简单:http://myapplication.com/management/countries。 我有许多其他控制器,超类是基本控制器。我这样做是为了避免代码重复,因为控制器具有相似的结构。
问题是:
- 我无法访问我想要的网址(/management/countries)
- 我不知道如何配置我的家庭控制器,因为我希望http://myapplication.com 可以访问它
我该如何解决这些问题?
我的路线配置是这样的:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
【问题讨论】:
-
请准确定义您遇到的错误(即 404,或未找到视图等),并提供您的路线配置。谢谢
标签: asp.net asp.net-mvc routes asp.net-mvc-5