既定では、MVC3 アプリの _Layout.cshtml の @RenderBody は ~/Views/Home/Index を指しています。
@RenderBody()
この設定はどこにありますか? ~/Views/Account/Logon を指すように変更するにはどうすればよいですか? または私が望むところならどこでも。ありがとう
既定では、MVC3 アプリの _Layout.cshtml の @RenderBody は ~/Views/Home/Index を指しています。
@RenderBody()
この設定はどこにありますか? ~/Views/Account/Logon を指すように変更するにはどうすればよいですか? または私が望むところならどこでも。ありがとう
それはそのビューを指すのではなく、与えられたビューをレンダリングするだけです
アプリが起動し、ルーティングのデフォルト アクションに移動します。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);
}
}
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
ビューをレンダリングします。
@RenderPage
代わりに使用する必要があります。詳細については、このリンクをたどってください。