#asp.net-mvc #asp.net-mvc-5 #attributerouting
#asp.net-mvc #asp.net-mvc-5 #маршрутизация атрибутов
Вопрос:
Я использую маршрутизацию атрибутов в приложении MVC5 и наслаждаюсь возможностью объявлять соглашения на уровне класса контроллера в соответствии с приведенным ниже примером. Существует ли рекомендуемый способ принудительного применения соглашений о пути / URL в нижнем регистре для действий внутри контроллера? В настоящее время я переопределяю GetAreaPrefix
в обычае DefaultDirectRouteProvider
для принудительного применения префиксов области нижнего регистра, но есть ли что-нибудь эквивалентное для обеспечения соблюдения соглашений о нижнем регистре для действий без необходимости размещать атрибут маршрута для каждого из них?
namespace TestNamespace
{
[RouteArea("TestArea", AreaPrefix = "testarea/testpath")]
[Route("{action=index}")]
public class TestController : Controller
{
/// <summary>
/// this returns /testarea/testpath/Index (note the action is not lowercase)
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
return View();
}
/// <summary>
/// this returns a properly lowercased path of /testarea/testpath/details
/// Do we really need to put route attributes on each action? Is it possible to have a custom declaration at the class level?
/// </summary>
/// <returns></returns>
[Route("details")]
public ActionResult Details()
{
return View();
}
}
}
Ответ №1:
После дополнительных исследований установка для свойства route collection LowercaseUrls значения true в RegisterRoutes
global.asax помогла мне:
routes.LowercaseUrls = true;