Tôi có trang kết quả tìm kiếm nơi tôi xuất danh sách các mục được định dạng theo cách cụ thể bằng cách sử dụng chế độ xem Dao cạo MVC.Tránh định dạng trùng lặp giữa chế độ xem Dao cạo phía máy chủ và mẫu jQuery phía máy khách
@for (int i = 0; i < group.Count(); i++) {
<div class="result">
<div class="ordinal">@((i+1).ToString()).</div>
<div class="detail"><p>@group.ElementAt(i).Name</p></div>
</div>
}
Khách hàng có thể lọc thêm các kết quả bằng cách sử dụng jQuery AJAX để lấy lại tập dữ liệu mới dưới dạng mẫu JSON và jQuery để hiển thị kết quả thay cho bản gốc. Đây là mẫu jQuery:
<script id="resultTemplate" type="text/x-jquery-tmpl">
{{each(i, result) results}}
<div class="result">
<div class="ordinal">${i+1}.</div>
<div class="detail"><p>${name}</p></div>
</div>
{{/each}}
</script>
đó là ràng buộc sau khi AJAX gọi:
var result = $("#resultTemplate").tmpl({ results: data });
$("#resultsColumn").empty().append(result);
Lưu ý làm thế nào tôi đã phải lặp lại trong các định dạng HTML cho kết quả tìm kiếm trong cả hai server-side đang Razor và khách hàng- mã jQuery bên. Tôi muốn chỉ có một phiên bản của mẫu dữ liệu bị ràng buộc để giảm cơ hội không phù hợp khi tôi phải thực hiện thay đổi.
Đọc Stephen Walter's Intro to jQuery Templates anh ấy gợi ý tích hợp "tốt hơn với nhau" khi sử dụng các mẫu jQuery với ASP.NET MVC vì vậy tôi đã tự hỏi liệu có một cơ sở giải quyết tình huống trên không.
Cảm ơn.
Điều này sẽ làm việc cho các mẫu đơn giản và tôi đồng ý rằng nó trở nên vô tình đối với các mẫu phức tạp (trong thực tế mẫu jQuery của tôi sử dụng bố cục, ở trên là một ví dụ đơn giản). Nó sẽ được tốt đẹp nếu Razor và jQuery mẫu sẽ chia sẻ cú pháp phổ biến, ngoại trừ điều đó sẽ làm phiền đám đông PHP;) và sẽ sớm chạy vào giới hạn khi bạn bắt đầu sử dụng cấu trúc ngôn ngữ cụ thể hơn. – stefann