2

この問題は何度も議論されてきましたが、私の特定のケースの解決策は見つかりませんでした。

私の Umbraco (6) ビューの 1 つで、次を使用してコントローラー メソッドを呼び出しています。

@Html.Action("Index", "CountryListing");

これにより、「ルート テーブルにルートがありません」という例外が発生します。

RegisterRoutes メソッドをいじっていましたが、役に立ちませんでした。RegisterRoutes メソッドを空にしても、サイトがまだ機能しているので、それが使用されているのだろうか。これは今のように見えます:

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

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

私はまた、このような呼び出しに空の「領域」を追加しようとしました

@Html.Action("Index", "CountryListing", new {area: String.Empty});

私は他の場所で @Html.Action ステートメントを使用していますが、それらは機能します。そのため、機能するものと機能しないものがある理由は理解できますが、現在の主な問題は、国のリスト アクションを機能させることです。

4

2 に答える 2

0

String.empty を使用する代わりに null を使用できます

@Html.Action("Index", "CountryListing",null);

エリアを使用している場合は、エリアごとに RegisterRoutes をオーバーライドする必要があります

public override string AreaName
    {
        get
        {
            return "CountryListing";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "CountryListing_default",
            "CountryListing/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }

同じ問題を確認することをお勧めします: https://stackoverflow.com/a/11970111/2543986

于 2013-11-17T16:49:54.130 に答える