5

Tôi đã thêm 3 bộ điều khiển và đối với một trong số đó, chế độ xem Chỉ mục không hoạt động theo mặc định.Chỉ số Bộ điều khiển MVC đôi khi 404?

Works(shows index): 
http://localhost:1767/Employees/ 
http://localhost:1767/Employees/Index 
http://localhost:1767/Home/  
http://localhost:1767/Home/Index 
http://localhost:1767/ 
http://localhost:1767/Companies/Index 

Doesn't work(gives 404 error): 
http://localhost:1767/Companies/ 

1) Tôi đã tạo thư viện lớp khung thực thể, được tạo từ cơ sở dữ liệu chứa bảng Nhân viên và công ty.

2) Đã tạo dự án trống MVC 3.

3) Đã thêm tham chiếu dự án từ dự án MVC vào dự án thư viện lớp EF.

4) Thêm một bộ điều khiển, và trong hộp thoại add khiển tôi đã chọn mô hình EF và một trong các bảng và đặt tên bộ điều khiển CompaniesController

5) Sau đó, tôi nhớ tôi cần một người HomeController, vì vậy tôi đã thêm bộ điều khiển khác , đặt tên nó là HomeController và một lần nữa chọn thực thể Companies.

6) Cuối cùng tôi đã thêm một EmployeesController chọn thực thể Nhân viên.

Đây là con đường duy nhất trong Global.asax.cs của tôi:

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

Tại sao không phải là mặc định http://localhost:1767/Companies/ URL để action index giống như tất cả các bộ điều khiển khác? Tôi đã thực hiện một vài dự án MVC thực hành và dường như luôn có vấn đề này. Trình điều khiển nhân viên mặc định cho chỉ mục hoạt động tốt, mặc dù không có tuyến đường nào yêu cầu nó làm điều này?

Edit: Đây là lỗi tôi nhận được:

The resource cannot be found. 
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /Companies/ 

Edit: Vì vậy, tôi thường không tiết lộ tên của các đơn vị của tôi hoặc các chi tiết miền khi đăng ví dụ trực tuyến, nhưng trong trường hợp này công ty đã thực sự được gọi là Thuộc tính, và thay đổi tên thành Properties2 cho thư mục xem và bộ điều khiển cố định vấn đề. Vì vậy, có vẻ như Thuộc tính là từ khóa đặc biệt phá vỡ mặc định thành Chỉ mục nếu nó xuất hiện trong URL

Trả lời

5

Thay đổi thư mục chế độ xem và bộ điều khiển từ Thuộc tính (Bộ điều khiển) thành Thuộc tính2 (Bộ điều khiển) và hoạt động tốt ngay bây giờ. Apperently "Properties" có một số xử lý đặc biệt trong một URL và phá vỡ việc mặc định thành chỉ mục

+0

Tôi nghĩ rằng nó có thể là do các thuộc tính là thư mục chuẩn AssemblyInfo.cs (project template) . Nó nên có được 4XX lỗi tin nhắn không chắc chắn lý do tại sao bạn nhận được 404 mặc dù. – Lokeshwer

+0

Bingo ... đã có chính xác vấn đề này. –

2

Bạn có chế độ xem Chỉ mục trong thư mục Chế độ xem của mình trong Công ty không? tức là Chế độ xem/Công ty/Index.aspx?

Lý do duy nhất tôi thấy nó không hoạt động (dựa trên thông tin được cung cấp) là do lỗi chính tả, bộ điều khiển công ty không kế thừa từ bộ điều khiển hoặc triển khai giao diện IController, hoặc chế độ xem bị thiếu trong Views/Controller thư mục cho chỉ mục hành động.

được sửa đổi: Đây là những gì tôi mong chờ các CompaniesController để trông giống như:

namespace MyProject.Controllers 

public class CompaniesController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() { 
     return View(); 
    } 
} 

Và nó sẽ nằm trong thư mục Controller của dự án của bạn.

+0

Có một Index.cshtml, tôi để hộp thoại Thêm Bộ điều khiển thực hiện tất cả các giàn giáo cho tôi, vì vậy tôi không biết làm thế nào hành động đúng nhưng sai chính tả của Chỉ số – AaronLS

+0

Bạn có thể đăng bản tóm tắt của lỗi xuất hiện tức là nó nói điều gì đó giống như không thể định vị được chế độ xem Chỉ mục. Các thư mục được tìm kiếm là Chế độ xem/Chỉ mục, Số lượt xem/Chia sẻ, .... v.v. – dreza

+0

Tôi đã chỉnh sửa bài đăng có thông báo lỗi. Nó chỉ là lỗi 404 thường xuyên mà MVC sử dụng. – AaronLS

3

Bạn có thêm hành động Chỉ mục vào công tyControlController của mình không?

[HttpGet] 
public ActionResult Index() 
{ 
    return View(); 
} 
+0

Ngoài ra, hãy đảm bảo rằng bạn có Index.cshtml hoặc Index.aspx (bất kỳ công cụ xem nào bạn đang sử dụng) vào thư mục Views/Companies –

+0

Có. Tôi đã cho phép hộp thoại Add Controller thực hiện tất cả các scaffolding cho tôi, nhưng tôi đã xác minh có một 'public ViewResult Index()' – AaronLS

3

Tôi nhận được 403.1 vì tôi có tên thư mục giống như tên bộ điều khiển trong thư mục gốc của dự án web.Vì vậy, ngay cả trước khi nó đạt đến độ phân giải tuyến đường MVC, nó không cố gắng để liệt kê nội dung thư mục. Có thể là vấn đề tương tự với các thuộc tính là thư mục chuẩn trong bất kỳ dự án nào

+0

Tôi đã có 404 như mô tả nhưng đây là vấn đề - Tôi có một bộ điều khiển được gọi là DevelopmentController.cs, và cũng có một thư mục được gọi là Phát triển. Thay đổi tên thư mục thành Dev, những ngày hạnh phúc! – Eraph

Các vấn đề liên quan