Tôi có danh sách người dùng mà tôi chuyển từ bộ điều khiển của mình sang chế độ xem bằng cách sử dụng túi xem. Bây giờ tôi cần để có thể vượt qua cùng một danh sách để javascript trên trang. Tôi có thể tạo lại danh sách bằng cách sử dụng vòng lặp foreach:Danh sách chuyển từ MVC ViewBag sang JavaScript
@foreach (var item in ViewBag.userList) //Gets list of users passed from controller and adds markers to the map
{
var userLat = item.LastLatitude;
var userLon = item.LastLongitude;
var _userId = item.Id;
<script>array.push({"userId":"'@_userId'","userLat":"'@userLat'","userLon":"'@userLon'"});</script>
}
Tuy nhiên, điều này có vẻ như một cách tiếp cận lộn xộn và yêu cầu nhiều việc phải làm lại nếu có thay đổi. Tôi biết có những bài viết tương tự trên Stack tràn, nhưng rất nhiều người trong số họ sử dụng phiên bản trước của MVC và cú pháp tương tự dường như không áp dụng. Ý tưởng nào?
Cảm ơn câu trả lời nhanh chóng và chi tiết! Nhưng tôi nhận được lỗi sau đây 'Không thể sử dụng một biểu thức lambda như một đối số cho một hoạt động gửi động ...' mà không có phần IEnumerable. Với phần đó được thêm vào, tôi cũng gặp lỗi 'Các đối số kiểu cho phương thức ... không thể suy ra từ việc sử dụng'. Cảm ơn bạn đã giúp đỡ, và xin lỗi nếu đây là một sai lầm tân binh. p.s. Tôi đang sử dụng mô hình xem cho một cái gì đó khác trên trang này, đó là lý do tại sao tôi đang sử dụng túi xem. – Matt
Nhưng mô hình chế độ xem là một lớp mà bạn đặc biệt thiết kế để đáp ứng các yêu cầu của chế độ xem của bạn. Trong trường hợp này, chế độ xem của bạn có yêu cầu tạo javascript động này. Vì vậy, mô hình khung nhìn của bạn nên chứa thuộc tính bộ sưu tập của loại 'IEnumerable'. Và sau đó chỉ cần thay thế toàn bộ diễn viên bằng 'Model.Users.Select (...)'.Nếu bạn rời khỏi ViewBag bị đánh máy yếu, bạn sẽ cần phải đưa nó vào loại 'IEnumerable ' thích hợp. –
Ok Tôi đã nhanh chóng sửa đổi trang và sử dụng mô hình Xem và nó hoạt động. Tôi cũng phải tham khảo một câu trả lời khác của bạn http://stackoverflow.com/questions/12111729/razor-javascript-and-trailing-semicolon, không biết về lỗi này trong VS2012. Cảm ơn câu trả lời tuyệt vời và thông tin! – Matt