1

localhost / Controller / Actionのように機能するようになりましたが、 localhost / MainFolder / SubFolder / Controller/Action のようにしたいと思います。

MainFolderとSubFolderの名前を取得する必要があるためです。お気に入り

RouteData routeData = htmlHelper.ViewContext.RouteData;
string currentAction = routeData.GetRequiredString("action");
string currentMainFolder = routeData.GetRequiredString("mainFolder");
string currentSubFolder = routeData.GetRequiredString("subFolder");

MyViewEngineコード;

    public class MyViewEngine: RazorViewEngine
{
    private static string[] NewViewFormats = new[] { "~/Views/MainFolder/SubFolder/{1}/{0}.cshtml" };

    public MyViewEngine()
    {
        base.ViewLocationFormats = base.ViewLocationFormats.Union(NewViewFormats).ToArray();
    }
}

私のRouteConfig.cs

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

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

        ViewEngines.Engines.Add(new MyViewEngine());
    }

マイビューフォルダ;

ここに画像の説明を入力してください

マイコントローラーフォルダ;

ここに画像の説明を入力してください

4

1 に答える 1

1

MVCルートは、古いスタイルのASP.NETサイトのようにファイルシステムベースではありません。すべてのコントローラーはコンパイル時に登録され、ルートは一致する名前のコントローラーを選択するだけです。コントローラがファイルシステムのどこにあるかは関係ありません。

于 2013-03-05T14:54:03.377 に答える