0
URLにコントローラの名前を入力する必要なく、ホームコントローラのリソースにアクセスする必要があります。たとえば、mysite.com/
に移動し、mysite.com/contact
などを使用して連絡先ページを読み込む必要がある場合は、index
アクションを読み込む必要があります。MVC 5属性ルーティング:コントローラアクションから不要なルート属性を削除する
以下のコントローラはこの要件を満たしていますが、コントローラアクションと同じ名前のルート属性を削除する方法があるのでしょうか?
たとえば、行動連絡先に[Route("contact")]
を使用することは意味がありません。このルート属性を削除すると、mysite.com/contact
になりますが、URLはmysite.com/home/contact
として生成されます。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
とのApplication_Startイベント:FYI
[RoutePrefix("")] // Remove the name of the controller from the URL
public class HomeController : Controller
{
public ViewResult Index()
{
return View("Index");
}
[Route("contact")]
public ViewResult Contact()
{
return View("Contact");
}
[Route("about")]
public ViewResult About()
{
return View("About");
}
[Route("terms-and-conditions")]
public ViewResult TermsAndConditions()
{
return View("TermsAndConditions");
}
}
は、ここに私のルート設定である
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}