2012-03-27 36 views
34

Tôi đã mở một dự án mẫu ASP.NET MVC.asp.net mvc có liên quan như thế nào với một hành động điều khiển?

Trong HomeController Tôi đã tạo ra một phương pháp (hành động) được đặt tên MethodA

public ActionResult MethodA() 
{ 
    return View(); 
} 

Tôi đã phải nhấp vào MethodA và tạo ra một cái nhìn mới gọi là MethodA1

lại đã làm nó và tạo ra một cái nhìn mới gọi là MethodA2.

  1. Mối quan hệ huyền diệu này được thực hiện như thế nào? Tôi đã tìm cấu hình để cho trình biên dịch xem MethodAX có liên quan đến hành động MethodA, nhưng không tìm thấy.

  2. Bộ điều khiển sẽ xem lại điều gì khi MethodA được gọi?

+2

nếu bạn muốn biết nơi ** MVC ** *** trông *** cho 'Chế độ xem' vừa tạo phương thức hành động và quên thêm' Tương tự '... – xandercoded

+1

Bạn cũng có thể thêm vị trí Tùy chỉnh để các lượt xem của bạn được tìm kiếm. Điều này có nghĩa là bạn có thể thêm cấu trúc thư mục tùy chỉnh trong 'Chế độ xem/Tên thư mục' để giữ cho Chế độ xem của bạn được sắp xếp. Tham khảo http: // stackoverflow.com/questions/632964/can-i-specify-a-tùy chỉnh-vị trí-để-tìm-cho-xem-trong-asp-net-mvc để xem cách thực hiện. – Graham

Trả lời

43

Quy ước là nếu bạn không chỉ định tên chế độ xem, chế độ xem tương ứng sẽ là tên của hành động. Vì vậy:

public ActionResult MethodA() 
{ 
    return View(); 
} 

sẽ hiển thị ~/Views/ControllerName/MethodA.cshtml.

Nhưng bạn cũng có thể chỉ định một tên xem:

public ActionResult MethodA() 
{ 
    return View("FooBar"); 
} 

và bây giờ là xem ~/Views/ControllerName/FooBar.cshtml sẽ được trả lại.

Hoặc thậm chí bạn có thể chỉ định một tên xem có đủ điều kiện mà không phải là bên trong thư mục quan điểm của bộ điều chỉnh dòng:

public ActionResult MethodA() 
{ 
    return View("~/Views/Foo/Baz.cshtml"); 
} 

Bây giờ rõ ràng là tất cả điều này giả định Razor như xem động cơ. Nếu bạn đang sử dụng WebForms, hãy thay thế .cshtml bằng .aspx hoặc .ascx (nếu bạn đang làm việc với partials).

Ví dụ nếu không có xem nó thậm chí sẽ cho bạn biết ở đâu và theo thứ tự nào đang tìm kiếm quan điểm:

enter image description here

Hãy nhớ rằng: ASP.NET MVC là tất cả về ước về cấu hình.

+1

Nó được tạo ra bởi Microsoft để làm việc tự động. –

+0

Tôi vẫn băn khoăn: khi tôi ánh xạ một hành động với chế độ xem đường dẫn không đối xứng, bản đồ mới được lưu ở đâu? –

+0

Nó được lưu ở đâu đó. Tại sao bạn nghĩ rằng nó phải được lưu ở bất cứ đâu? –

9

Quy ước sử dụng khung MVC về cấu hình. Khung công tác gọi ExecuteResult trên đối tượng ViewResult (được tạo bởi khung nhìn trả về();). Sau đó, quy tắc theo quy ước sẽ hiển thị ở một số vị trí để tìm một chế độ xem

Nếu bạn đang sử dụng các khu vực, khuôn khổ sẽ trông ở các vị trí sau cho chế độ xem.

  • /Areas//Views/ControllerName/ViewName.aspx
  • /Areas//Views/ControllerName/ViewName.ascx
  • /Areas//Views/Shared/ViewName.aspx
  • /Khu vực // Lượt xem/Chia sẻ/ViewName.ascx
  • /Areas//Views/ControllerName/ViewName.cshtml
  • /Areas//Views/ControllerName/ViewName.vbhtml
  • /Areas//Views/Shared/ViewName.cshtml
  • /Khu vực // views/Shared/ViewName.vbhtml

nếu không có khu vực (hoặc nếu bạn đang sử dụng khu vực và không có tầm nhìn đã được tìm thấy) khuôn khổ sẽ xem xét các địa điểm sau đây

  • /views/kiểm soát lerName/ViewName.aspx
  • /Views/ControllerName/ViewName.ascx
  • /Views/Shared/ViewName.aspx
  • /Views/Shared/ViewName.ascx
  • /Views/ControllerName/ViewName.cshtml
  • /Views/ControllerName/ViewName.vbhtml
  • /Views/Shared/ViewName.cshtml
  • /Views/Shared/ViewName.vbhtml

Ngay khi Khung kiểm tra vị trí và tìm tệp, khi đó tìm kiếm dừng lại, và chế độ xem đã được tìm thấy được sử dụng để hiển thị phản hồi cho ứng dụng khách.

Có một số phiên bản tóm tắt của phương thức Chế độ xem. Cách phổ biến nhất là hiển thị một khung nhìn cụ thể, bên ngoài quy ước khung, bằng cách gọi nó theo tên. Ví dụ

return View("~/Views/AnotherIndex.cshtml"); 

Là một chú thích thú vị, khung tìm kiếm di sản ASP, C# và quan điểm VB Razor (aspx, ascx, cshtml và vbhtml) ngay cả khi bạn có một công cụ xem cụ thể.

+0

Hiệu suất có quan trọng không nếu bạn sử dụng phương pháp Ghi đè chế độ xem mà không có tên chế độ xem Vs. với tên chế độ xem? – nam

0

Tôi đang tìm kiếm tương tự và tôi vừa thực hiện một vài thử nghiệm và đã tìm ra. Nó không lưu ở bất cứ đâu. Để hiểu cách hoạt động; chỉ cần thực hiện các bước sau:

Trong bộ điều khiển của bạn, nhấp chuột phải, Thêm Xem Sau đó, nhập Tên khác và Ctrl F5 bạn sẽ gặp lỗi Máy chủ trong ứng dụng.

Ví dụ: nếu bạn nhấp chuột phải, Thêm chế độ xem theo phương thức Hành động chỉ mục và nhập "Chỉ số2" trong tên Chế độ xem, bạn sẽ gặp lỗi.

public class TestController : Controller 
{ 
    // GET: Test 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

Vì vậy, về cơ bản có một hợp 1-1 giữa tên hành động và Xem tên. Và bạn không thể thêm chế độ xem cho cùng một phương thức để không cần phải lưu trong tệp cấu hình.

Bây giờ hãy thay đổi tên tệp xem trong Visual Studio từ Index2.cshtml thành Index.cshtml rồi nhấn Ctrl + F5. Bạn sẽ thấy nó đang hoạt động.

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