使用asp.net MVC4,我怎样才能使我的root index.html默认执行?

时间:2013-01-18 19:56:21

标签: asp.net-mvc-4 asp.net-mvc-routing

对于我的大部分网站,我希望正常路由以MVC方式发生。但是,当应用程序首次启动时,我不希望路由转到/Home/Index.cshtml。我希望它简单地转到/Index.html

我目前的RegisterRoutes看起来像这样(并没有实现我的目标)

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

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

3 个答案:

答案 0 :(得分:7)

    public ActionResult Index() {
        string FilePath = Server.MapPath("~/index.html");
        // You can add other conditions also here
        if (System.IO.File.Exists(FilePath)) {
            return File(FilePath, "text/html");
        }
        return View();
    }

希望这有帮助!

答案 1 :(得分:1)

我不知道你是否考虑到这一点,你应该在root web.config中设置:

<appSettings>
    <add key="webpages:Enabled" value="true" />
</appSettings>

如果你在根目录中有一个index.cshtml,那么你在RouteConfig.cs中不需要任何其他东西(这个文件只能包含html代码)。

但是如果你只想提供(不处理)文件,我的意思是,index.html例如你还需要在项目中将这个文件设置为起始页面,这就是所有,最简单的答案。

答案 2 :(得分:0)

定义所有控制器的路由并删除默认根目录:

            name: "Default",
            url: "{controller}/{action}/{id}",

新默认值为index.html。