6

对于我的大部分网站,我希望正常路由以 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 }
        );
    }
4

3 回答 3

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();
    }

希望这可以帮助!

于 2013-07-11T04:17:46.620 回答
1

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

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

如果根目录中有 index.cshtml,则 RouteConfig.cs 中不需要任何其他内容(该文件当然只能包含 html 代码)。

但是,如果您只想提供(而不是处理)文件,例如 index.html,您还需要将此文件设置为项目中的起始页面,仅此而已,最简单的答案。

于 2013-04-27T08:23:50.367 回答
0

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

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

新的默认值为 index.html。

于 2013-10-21T04:07:00.383 回答