2012-02-02 32 views
6

Trong phản hồi SO cho một câu hỏi khác, người dùng cho biết rằng nó cho phép bạn tránh các giá trị đường dẫn mã hóa cứng vào thẻ liên kết html, nhưng điều đó không thực sự hợp lệ vì bạn phải đặt trong bộ điều khiển, hành động, khu vực, vv như các chuỗi để bạn vẫn khó mã hóa các giá trị tuyến đường.Lợi ích của việc sử dụng các trình trợ giúp HTML MVC như ActionLink, BeginForm, TextBox, vv thay vì các thẻ HTML gốc là gì?

thế nào là thế này:

@Html.ActionLink(linkText: "MyLink", actionName: "MyAction", controllerName: "MyController", new { id = @myId }, new { area = "SomeArea"}) 

tốt hơn thế này:

<a href='/SomeArea/MyController/MyAction/myId'>MyLink</a> 

Trả lời

3

quan sát của bạn chỉ đúng nếu (a) bạn đang sử dụng đúng các định dạng định tuyến mặc định và (b) nếu bạn ứng dụng sẽ luôn được cài đặt tại thư mục gốc của trang web. Nếu bạn không làm điều này trước đây (hãy tạo một tuyến cắt/trợ giúp ngắn đi đến bộ điều khiển Home và hành động trợ giúp, và sau đó thay đổi nó bằng cách giới thiệu một bộ điều khiển trợ giúp với nhiều hành động hơn, sau đó bạn sẽ cần phải cập nhật tất cả Các thẻ neo được mã hóa cứng Một cách thay thế tốt hơn là sử dụng trình trợ giúp RouteLink với tên tuyến đường và các tùy chọn khác, tùy chọn, các tham số khác. KHÔNG nằm ở gốc của trang, mà là trong thư mục con, triển khai sản xuất là hỗn hợp, nhưng nhiều ứng dụng được cài đặt tại trang gốc. Điều này là rất hữu ích mà tôi thậm chí sử dụng nó cho các kịch bản, tập tin css, hình ảnh, vv thông qua UrlHelper để ma chắc chắn rằng bất kỳ đường dẫn nào được chỉ định cho những đường dẫn không bị gián đoạn giữa dàn dựng và sản xuất.

+0

Tất cả các điểm tốt. Vì các ứng dụng của tôi luôn nằm trong trang web của riêng chúng và sử dụng các đường dẫn gốc, tôi thậm chí không xem xét các trường hợp sử dụng khác. Sau khi nhìn kỹ hơn vào helper RouteLink, nó có vẻ phù hợp hơn cho hầu hết các trường hợp. – jpshook

0

Có vẻ như ít có lợi khi sử dụng trình trợ giúp, cung cấp cho bạn một thay đổi - thêm một chiếc tilda để router tự động giải quyết địa chỉ đến đúng địa điểm.

<a href='~/SomeArea/MyController/MyAction/myId'>MyLink</a> 
Các vấn đề liên quan