2016-06-30 1 views
1

URLにレンダリングしたいインデックスビューのログインコントローラhttp://sitename/loginがあります。私はhttp://sitename/login/indexを参照して動作しますが、URLからインデックスを省略したいと思います。ここに私のルートの設定(デフォルト)です:URLにインデックスのないコントローラのインデックスビューをレンダリングするにはどうすればよいですか?

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 

...とコントローラ:

public class LoginController : Controller 
{ 
    // GET: Login 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

答えて

0

あなたは一人でDefaultルートを残していた場合、それはあなたが聞いて何でしょう。 actionのルート値のデフォルト値をIndexと設定するだけです。

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

また、ログインコントローラをカバーする追加のルートを挿入することもできます。それはアプリケーション内のすべてのコントローラのデフォルトのアクション名ですので、

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

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

第三の選択肢は、LoginController.Dashboard_1にごLoginController.Indexメソッドの名前を変更することです。

関連する問題