2010-05-27 36 views
10

Có cách nào để tạo Hành động T4MVC được đánh máy mạnh mẽ với băm/bảng/đoạn trong đó không?Tạo liên kết hành động T4MVC với đoạn url

Ví dụ, đây là liên kết Tôi muốn tạo:

<a href="/Home/Index#food">Feed me</a> 

Nhưng không có phần mở rộng cho các đối tượng T4MVC có thể làm điều này.

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %> 

Vì vậy, những gì tôi sẽ chỉ phải làm là tạo một hành động, và sau đó nhúng nó như vậy:

<a href="<%= Url.Action(T4MVC.Home.Index()) %>"#food>Feed me</a> 

Đây không phải là rất đáng mơ ước. Bất cứ ai có bất cứ ý tưởng/đề nghị?

Cảm ơn trước

+2

Bạn sẽ phải chỉnh sửa mẫu T4 để thêm mẫu này. Đó không phải là khó khăn. Nhưng theo ý kiến ​​của tôi, bạn nên sử dụng trình trợ giúp url.Action (làm ví dụ của bạn). Tôi cảm thấy nó dễ đọc hơn nhiều. Cá nhân tôi không muốn tạo html đơn giản như một thẻ trong trình trợ giúp. –

+0

Bất kỳ lý do nào khiến bạn không muốn tạo ra nó? –

Trả lời

8

Cách tiếp cận này là người duy nhất tôi có thể nghĩ ra mà cảm thấy (với tôi) tốt hơn một chút so với văn bản neo bằng tay:

${Html.ActionLink("Feed me", T4MVC.Home.Index(), Fragment: "food")} 

Ngoài spark viewengine - chi phí 1 tốt phương pháp mở rộng htmlhelper cũ & thông số được đặt tên.


tôi cho rằng điều này không có sẵn trong viewengine mặc định? Tôi đã quyết định viết một phần mở rộng nhanh cho ActionLink, nhưng nó không thanh lịch, và tôi sẽ thích bất kỳ giải pháp nào có sẵn cho những người khác trong các phiên bản tương lai của T4MVC.

Spark thay thế <% =%> bằng $ {}. Đề cập đến chỉ vì tôi thích nó (Bạn nên thử nó nếu bạn nhấn mạnh mã sang trọng). C# 4.0 là bắt buộc để sử dụng các tham số có tên.

Đó là vì tôi muốn tránh mất thông tin mà tham số đối số "thực phẩm" tham chiếu.


Và vâng, tôi đồng ý với Mattias Jakobsson.

+0

Tôi cho rằng điều này không có sẵn trong chế độ xem mặc định? Tôi đã quyết định viết một phần mở rộng nhanh cho ActionLink, nhưng nó không thanh lịch, và tôi sẽ thích bất kỳ giải pháp nào có sẵn cho những người khác trong các phiên bản tương lai của T4MVC. –

+1

Xem bên dưới, câu trả lời của David Ebbo, đây là bây giờ trong T4MVC –

9

Trong ASP.NET MVC 2.0 new helpers have been added that allow you to specify the fragment. Ví dụ:

<%= Html.ActionLink("Feed me", "Action", "Controller", null, null, "food", null, null) %> 
+4

Điều này đã có sẵn trong MVC v1, nhưng không có trong các bổ sung T4MVC. Lý do chính của tôi để có T4MVC là thoát khỏi các chuỗi ma thuật hiện diện trong ví dụ của bạn. –

2

Cập nhật: tình trạng quá tải này được bao gồm với T4MVC 2.6.56

Vâng, cho đầy đủ chúng ta có lẽ nên thêm video này vào T4MVC. Nó phải dễ dàng để làm, ngoại trừ chúng tôi sẽ kết thúc với rất nhiều quá tải nếu chúng ta bắt đầu thêm giao thức/tên máy chủ là tốt.

Mọi thứ sẽ dễ dàng hơn nếu chúng tôi ngừng hỗ trợ Fx 3.5, vì chúng tôi có thể dựa vào các tham số mặc định/được đặt tên, giúp ích rất nhiều với việc giảm địa ngục quá tải. Nhưng tôi đã tránh bước đó cho đến nay bởi vì không phải tất cả mọi người trên 4.0 được nêu ra.

Có lẽ tôi nên đóng băng phiên bản hiện tại là Fx 3.5/MVC 1.x mới nhất tương thích, và sau đó chỉ hỗ trợ Fx 4.0/MVC 2 trong phiên bản mới hơn (trong khi vẫn giữ nguyên phiên bản cũ).Dù sao, tôi đang digressing :)

+0

Xin chào David. Cảm ơn câu trả lời. Có, tôi nghĩ rằng đóng băng nó cho NET 3.5. Chắc chắn sẽ giúp đỡ trong việc khuyến khích mọi người di chuyển đến. NET 4/MVC 2. Chắc chắn, nó sẽ làm cho nó dễ dàng hơn với params đặt tên. –

1

David Ebbo đã thêm tính năng này vào T4MVC dựa trên similar question Tôi đã tạo trên StackOverflow.

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