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); 
    } 

答えて

0

代わりのルート接頭辞として空の値を使用して、私が使用して終了しました次のような特定のコントローラアクションのルート属性。

public class HomeController : Controller 
{ 
    public ViewResult Index() 
    { 
     return View("Index"); 
    } 

    [Route("contact-us")] 
    public ViewResult Contact() 
    { 
     return View("Contact"); 
    } 

    [Route("about-us")] 
    public ViewResult About() 
    { 
     return View("About"); 
    } 

    [Route("terms-and-conditions")] 
    public ViewResult TermsAndConditions() 
    { 
     return View("TermsAndConditions"); 
    } 
} 

これにより、各ルートがサイトのルートから確実にアクセスされます。

関連する問題