2013-01-18 14 views
6

Đối với nhiều trang web của tôi, tôi muốn định tuyến bình thường xảy ra theo cách MVC. Tuy nhiên, khi ứng dụng lần đầu tiên khởi chạy, tôi không muốn tuyến đường đến /Home/Index.cshtml. Tôi muốn nó đi chỉ đơn giản là /index.htmlVới asp.net MVC4, làm thế nào tôi có thể làm cho index.html gốc của tôi được thực thi theo mặc định?

RegisterRoutes hiện tại của tôi trông như thế này (và không đạt được mục tiêu của tôi)

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 } 
     ); 
    } 
+0

tôi đã đặt một câu hỏi lạ? hy vọng cho một câu trả lời đơn giản –

+3

Câu trả lời này là những gì bạn muốn tôi nghĩ. http://stackoverflow.com/questions/12417437/mvc4-is-there-a-way-to-route-the-root-to-a-normal-unprocessed-html-page –

Trả lời

1

tôi không biết nếu bạn thực hiện việc này vào tài khoản, trong gốc web.config bạn nên đặt:

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

bạn không cần bất cứ điều gì khác trong RouteConfig.cs nếu bạn có một index.cshtml trong thư mục gốc (tập tin này có thể chỉ chứa mã html ofcourse).

Nhưng nếu bạn muốn phân phối (không xử lý) tệp, ý tôi là, index.html ví dụ bạn cũng cần thiết lập tệp này làm Trang bắt đầu trong dự án và đó là tất cả, câu trả lời đơn giản nhất.

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

Hy vọng điều này sẽ hữu ích!

0

Xác định các tuyến đường cho tất cả các bộ điều khiển của bạn và loại bỏ các gốc mặc định:

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

Giá trị mặc định mới sẽ là index.html.