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 中,默认操作配置为索引,因此呈现的是此视图。

因此,您所要做的就是修改您的路由配置,以便在 Account 控制器上的默认操作是登录:

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

现在,当您导航到 时/,将执行控制器的 LogOn 操作,该操作Account本身将呈现~/Views/Account/LogOn.cshtml视图。

于 2012-05-23T20:10:27.393 回答
0

你应该@RenderPage改用。点击此链接了解更多信息。

于 2013-01-15T02:57:29.917 回答