Tôi đã quét xung quanh để tìm một giải pháp thích hợp để gán lớp "hiện hoạt/hiện tại" cho các mục menu từ trang chính. Dòng này được chia nhỏ giữa liên quan đến việc có nên thực hiện điều này với máy khách và phía máy chủ không.mục menu đang hoạt động - trang chủ asp.net mvc3
Thật sự tôi mới dùng cả JavaScript và MVC nên tôi không có ý kiến. Tôi thích làm điều này theo cách "sạch nhất" và thích hợp nhất.
Tôi có mã jQuery sau để gán lớp "hoạt động" cho mục <li> ... vấn đề duy nhất là mục "chỉ mục" hoặc mục menu xem mặc định sẽ luôn được chỉ định lớp đang hoạt động, vì URL luôn là chuỗi con của các liên kết menu khác:
(default) index = localhost/
link 1 = localhost/home/link1
link 2 = localhost/home/link1
$(function() {
var str = location.href.toLowerCase();
$('#nav ul li a').each(function() {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$(this).parent().attr("class","active"); //hightlight parent tab
}
});
Có cách nào tốt hơn để làm điều này không? Có ai đó ít nhất sẽ giúp tôi có được phiên bản chống đạn phía máy khách? Vì vậy, "chỉ mục" hoặc liên kết mặc định luôn "hoạt động"? Có cách nào để gán một phần mở rộng giả cho phương pháp chỉ mục không? thay vì chỉ là URL cơ sở, nó sẽ là localhost/home/dashboard
để nó không phải là chuỗi con của mọi liên kết?
Thật sự, tôi không thực sự làm theo các phương pháp làm điều này phía máy chủ, đó là lý do tại sao tôi đang cố gắng để làm điều đó phía khách hàng với jQuery ... bất kỳ trợ giúp sẽ được đánh giá cao.
Đáng chú ý htmlHelper.ActionLink() cần "using System.Web.Mvc.Html;" – 4imble
Hoạt động rực rỡ +1 – 4imble
Bạn cũng cần phải nhập không gian tên trong chế độ xem của mình, nếu sử dụng Dao cạo trong MVC3, bạn có thể thực hiện việc này bằng cách thêm @using vào chế độ xem của bạn –
Duncan