ASP.NET — Иметь мой контроллер в качестве пользовательского RoutePrefix

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть такой контроллер:

 [RoutePrefix("")]
public class LotController : Controller
{
    [Route("{AreaLots}")]
    public ActionResult Index(string AreaLots)
    {
        return View();
    }
}
 

То, что я пытаюсь сделать, это указать URL-адрес независимо от значения AreaLots, чтобы он выглядел как localhost / MyArea вместо localhost / Lot / Index ?AreaLots= Моя область

Возможно ли то, что я пытаюсь сделать?

Вот мой маршрут:

 routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
 

Комментарии:

1. Если вы просто хотите удалить префикс, вы можете использовать тильду ~ перед своим атрибутом RouteAttribute: [Route(“~/MyArea”)] . В этом случае [RoutePrefix("")] было бы излишним.

Ответ №1:

Я не знаю, можете ли вы сделать localhost / MyArea, но вы можете сделать localhost / Lot / MyArea (что уже лучше, чем localhost / Lot / Index?AreaLots=MyAreay) с этой конфигурацией маршрута

 routes.MapRoute(
    name: "Lot",
    url: "Lot/{AreaLots}",
    defaults: new { controller = "Lot", action = "Index" }
);