0

ルート領域にホームページ ルートがあります。

routes.MapLocalizedRoute("HomePage",
                            "",
                            new { controller = "Home", action = "Index" },
                            new[] { "Nop.Web.Controllers" });

そしてザホイと呼ばれるエリア

    namespace Nop.Web.Areas.Xahoi
{
    public class XahoiAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Xahoi";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {

            context.MapRoute(
            "Xahoi_default",
            "Xahoi/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional },
            new[] { "Nop.Web.Areas.Xahoi.Controllers" });


        }
    }
}

http://domain.com/xahoi/homeを呼び出すと、Xahoi Area の Home コントローラーに入りますが、ルートの Home コントローラーから Index ビューを実行します。

また、呼び出しをhttp://domain.com/xa-hoiだけに変更したい場合、どうすればよいですか?

4

2 に答える 2

0

まず、MVC が「舞台裏」でどのように機能するかをよりよく理解するために、glimpseをインストールすることをお勧めします。

基本的に、いくつかの場所でコントローラーとビューを探します。glimpse を使用すると、これが明らかになります:)

Xahoi エリアに、Home に属する index と呼ばれるビューが実際にありますか? 例: Areas\Xahoi\Views\Home\Index.cshtml

それ以外の場合は、MapRoute で Area プロパティを指定できますが、それがデフォルトで行われることだと思います。次のマッピングでも、URL を変更する必要があります。

public override void RegisterArea(AreaRegistrationContext context) {

    context.MapRoute(
    "Xahoi_default",
    "xa-hoi/{controller}/{action}/{id}",
    new { Area=AreaName controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { "Nop.Web.Areas.Xahoi.Controllers" });


}
于 2013-09-09T11:01:13.680 に答える
0

デフォルトのコントローラーを指定するには、それを配列の 3 番目のパラメーターに追加するだけです。

public override void RegisterArea(AreaRegistrationContext context)
    {

        context.MapRoute(
        "Xahoi_default",
        "Xahoi/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new[] { "Nop.Web.Areas.Xahoi.Controllers" });


    }

間違ったビューを表示する問題は、4 番目のパラメーターの名前空間の問題である可能性があり、コードが間違ったコントローラーで実行されている可能性があります... または、ビュー フォルダー構造がビューを見つけられないような構造になっている可能性がありますAreas\Xahoi\Views\Home フォルダーにあり、ルート ビュー フォルダーのインデックス ビューを使用しています。Views\Home フォルダではなく、Views フォルダに Index ビューがあるのではないでしょうか?

それが名前空間の問題であるかどうかを判断するには、新しいコントローラー (領域内のコントローラー) にブレーク ポイントを設定し、ページにアクセスしたときにヒットするかどうかを確認します。

お役に立てれば

于 2013-09-09T10:30:43.613 に答える