2010-01-18 24 views
6

Tôi cần hiển thị URL cho tìm kiếm JavaScript mà tôi đang thực hiện. Thật không may Url.Action không chỉ hiển thị hành động mà còn là id hiện tại. Điều này xảy ra khi hiện tại trên trang sử dụng hành động với id.Url.Chú ý chỉ hiển thị bộ điều khiển và hành động nhưng không phải là id

Để minh họa Url.Action("List", "Org"); trước tiên sẽ hiển thị Org/List mà từ đó tôi có thể nối thêm tổ chức để được liệt kê. Tuy nhiên, sau khi vị trí đã được chuyển đến Org/List/12345Url.Action("List", "Org"); sẽ hiển thị Org/List/12345 và thêm vào đó sẽ tạo ra sự cố trong đó tôi kết thúc bằng số Org/List/12345/6789.

Có phương pháp khác nào mà tôi có thể sử dụng không phải là Url.Action không? Tôi đã nghĩ về việc sử dụng JavaScript để kiểm tra số lượng / và loại bỏ một phần của chuỗi nhưng điều đó có vẻ hơi khó hiểu.

// appears in my Site.Master & utilizes the AutoComplete plugin for jQuery 
$(document).ready(function() { 
    $("input#FindOrg").autocomplete('<%= Url.Action("Find", "Org") %>', { 
     minChars: 3, 
     maxItemsToShow: 25 
    }).result(function(evt, data, formatted) { 
     var url = '<%= Url.Action("List", "Org") %>/'; 
     window.location.href = url + data; 
    }); 
}); 

Trả lời

12

Hai đề xuất:

Điều gì sẽ xảy ra nếu bạn sử dụng Url.Action("Find", "Org", new { id = "" })?

Cách khác, hãy thử xây dựng url theo cách thủ công với Url.Content("~/Find/Org").

+0

'Url.Action (" Tìm "," Org ", mới {id =" "})' đã thực hiện thủ thuật. Nên đã rất rõ ràng! – ahsteele

+0

Rất đẹp. Đã không thử nó bản thân mình vì vậy tôi đã không chắc chắn, nhưng nó sử dụng định tuyến nội bộ, vì vậy tôi nghĩ rằng nó có thể ghi đè lên bất cứ hành vi đã gây ra nó để lấy id hiện tại. – womp

0

Bạn có thể 'lừa' và truy cập mục 'Bộ điều khiển' và 'Hành động' trong Từ điển định tuyến. Điều này sau đó sẽ cho phép bạn chỉ xây dựng một phần của url bạn cần. Thông báo trước duy nhất là nếu bạn thay đổi mô hình định tuyến, các thường trình này có thể không chính xác.

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