6

既定では、MVC3 アプリの _Layout.cshtml の @RenderBody は ~/Views/Home/Index を指しています。

  @RenderBody()

この設定はどこにありますか? ~/Views/Account/Logon を指すように変更するにはどうすればよいですか? または私が望むところならどこでも。ありがとう

4

3 に答える 3

2

それはそのビューを指すのではなく、与えられたビューをレンダリングするだけです

アプリが起動し、ルーティングのデフォルト アクションに移動します。Global.asax

/Account/LogOn必要に応じて、デフォルトに変更できます

public class MvcApplication : System.Web.HttpApplication {

    public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        //routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
        );
    }

    protected void Application_Start() {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }
}
于 2012-05-23T20:11:06.270 に答える
1

RenderBody はデフォルトでは を指しません~/Views/Home/Index。実行されたコントローラー アクションによって返されたビューをレンダリングします。また、ルーティング定義の Global.asax では、既定のアクションが Index に構成されているため、レンダリングされるのはこのビューです。

そのため、ルーティング構成を変更して、デフォルトのアクションが Account コントローラーの Logon になるようにするだけです。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
);

に移動する/と、Accountコントローラーの LogOn アクションが実行され、それ自体が~/Views/Account/LogOn.cshtmlビューをレンダリングします。

于 2012-05-23T20:10:27.393 に答える
0

@RenderPage代わりに使用する必要があります。詳細については、このリンクをたどってください。

于 2013-01-15T02:57:29.917 に答える