2017-03-07 6 views
2
で働いていない

カスタムルーティングはMVC

<a href="@Url.Action("Index", "ShowUser")" onclick="javascript:onBegin()">View</a> 

を次のように

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

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Auth", action = "LogIn", id = UrlParameter.Optional } 
     ); 
     routes.MapRoute(
      name: "ShowUser",            // Route name 
      url: "{controller}/{action}/{id}",       // URL with parameters 
      defaults: new { controller = "UserGroupEdit", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
    } 

とアクションリンクを次のように私はフレンドリーURLを作成してい

ので、私はrouteconfigファイル内のクレタ島のルートを持っている。しかし、それは与えて動作していませんランタイムエラー "リソースが見つかりません。"

+0

あなたが取得しているどのようなエラー? –

+0

'/'アプリケーションのサーバーエラー。 リソースが見つかりません。 説明:HTTP 404。探しているリソース(またはその依存関係の1つ)が削除されているか、名前が変更されているか、一時的に使用できない可能性があります。次のURLを確認し、正しく入力されていることを確認してください。 リクエストされたURL:/ ShowUser/Index –

+0

カスタムルートにアクセスする方法が正しくない場合でも、デフォルトルートは機能するはずです。 'RouteConfig.RegisterRoutes(RouteTable.Routes);が' Application_Start'イベントの内部にあることを確認してください。コントローラーとアクションの方法を表示できますか? – Win

答えて

2

デフォルトルートとカスタムルートは同じ構造を持っているため、デフォルトルートは最初に宣言されているため常に使用されます。 コードでShowUserを参照しているので、コントローラの名前UserGroupEditを使用する必要があるため、エラーが発生していると推測されます。あなたは優しいルートをしたい場合は

<a href="@Url.Action("Index", "UserGroupEdit")" onclick="javascript:onBegin()">View</a> 
+0

実際に私の要件は、UserGroupEditの代わりにユーザーフレンドリーなURLを与えることです/ URLバーのインデックスは、バーでShowUser/Indexを表示する必要があります。 –

+0

@ C.jackingは解決策として上記の答えを参照してください –

+0

あなたは[Route( "ShowUser")]を目的のアクションとリンクとして使用することができますView

1

あなたcshtml

@Url.Action("Index", "UserGroupEdit") 
+0

実際に私の要件は、UserGroupEditの代わりにユーザーフレンドリーなURLを与えることです/ URLのバーのインデックスはバーでShowUser/Indexを表示する必要があります。 –

+0

私がURLを提供するオプションが "showuser/index"を表示する場合 –

+0

コントローラ名の名前を変更すると、複数の場所で変更する必要があります。なぜ私はカスタムURLを使用しているのですか? –

0

にこの

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

    routes.MapRoute(
     name: "ShowUser",            // Route name 
     url: "ShowUser/index/{id}",       // URL with parameters 
     defaults: new { controller = "UserGroupEdit", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 

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

} 

ような何かを行うことができますあなたは、ルート名を指定することができますUrlHelper.RouteUrlヘルパーメソッドを使用することができます:

<a href="@Url.RouteUrl("ShowUser", new { action = "Index" })" onclick="javascript:onBegin()">View</a> 

RouteConfig:

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

リファレンスlink

+0

です。 "http:// localhost:52155/ShowUser"が生成されています。ページ "サーバーエラー '/'アプリケーション。 リソースが見つかりません" –

+0

上記のようにrouteconfigを更新してください。 'Route'属性を使用して、探しているものを達成することもできます。 @勝利の答えを見てください – rageit

関連する問題