2010-01-02 31 views
7

Làm thế nào để HtmlHelper.ActionLink (htmlhelper, chuỗi liên kết văn bản, chuỗi hành động) tìm ra con đường chính xác?Cho htmlHelper + tên hành động, làm thế nào để tìm ra tên bộ điều khiển?

Nếu tôi có điều này =>

HtmlHelper.ActionLink("Edit","Edit") 

MVC tự động tìm ra con đường đúng.

tức là - nếu bộ điều khiển là Sản phẩm, nó sẽ hiển thị neo với href product/edit.

Vậy - làm thế nào để tìm ra tên bộ điều khiển khi tôi nhận htmlHelper + tên hành động kết hợp?

Trả lời

15

Nếu HtmlHelper của bạn trông giống như sau:

public static string MyHelper(this HtmlHelper htmlHelper, 
          ... some more parameters ...) { 

    return ... some stuff ... 
} 

Sau đó từ helper của bạn, truy cập:

RouteData routeData = htmlHelper.ViewContext.RouteData; 
string controller = routeData.GetRequiredString("controller"); 

Đối tượng RouteData chứa tất cả các giá trị đã được xử lý bởi ASP.NET Routing cho hiện tại yêu cầu. Điều này sẽ bao gồm tên và giá trị tham số từ tuyến đường, chẳng hạn như "{controller}/{action}/{id}". Nhiều người trong số các trình trợ giúp ASP.NET MVC dựng sẵn lấy dữ liệu "môi trường xung quanh" từ đó để nhà phát triển không phải nhập chúng vào cho mọi trình trợ giúp mà họ sử dụng.

Bạn cũng có thể tải về mã nguồn đầy đủ để ASP.NET MVC từ đây:

  1. ASP.NET MVC 1.0 RTM source code
  2. ASP.NET MVC 2 Release Candidate source code
+0

đã xem/sử dụng này trước đây. Chỉ bị bối rối. Cảm ơn. :) –

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