2014-10-13 20 views
23

Trong đối tượng viewmodel, dưới đây là tài sản:Làm thế nào để có được đối tượng JSON từ đối tượng Razor Model trong javascript

public IList<CollegeInformationDTO> CollegeInformationlist { get; set; } 

Trong VIEW, javascript là như sau:

var obj = JSON.stringify('@Model.CollegeInformationlist'); 
    alert(obj[1].State); //NOT WORKING, giving string char 

     $.each('@Model.CollegeInformationlist', function (i, item) { 
    var obj = JSON.stringify(item); 
    var r = $.parseJSON(obj); 
    alert(r.State); //just giving undefined. 
    }); 

Xin hướng dẫn ở đây, làm thế nào tôi có thể nhận được đối tượng JSON trong javascript.

+0

javascript của bạn không biết những gì lớp CollegeInformationDTO của bạn trông như thế nào. Tại công việc cuối cùng của chúng tôi, chúng tôi đã xác định một đối tượng trong kịch bản với cấu trúc giống như mô hình và sau đó đã làm một jquery .map để ánh xạ mô hình cho đối tượng javascript. Ngoài ra hãy chắc chắn rằng những gì bạn đang chuyển đến xem là một chuỗi JSON –

+0

Bạn cần phải nối tiếp đối tượng Model của bạn với JSON. Bạn nên tạo một phương thức (hoặc thuộc tính) trả về kết quả đó. – musefan

+0

Bạn có thể chia sẻ cho tôi một số nội dung để thực hiện việc này không. ở đây, tôi đã viết 'var obj = JSON.stringify ('@ Model.CollegeInformationlist');' vì vậy, nó nên chuyển đổi thành đối tượng JSON và có thể đưa ra kết quả khi viết rõ ràng thuộc tính '.State' nhưng nó không hoạt động như một cách . Có vẻ, OBJECT được chuyển thành loại chuỗi. – dsi

Trả lời

59

Bạn có thể sử dụng như sau:

var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist)); 

sẽ ra này như sau (mà không nhìn thấy mô hình của bạn tôi đã chỉ bao gồm một lĩnh vực):

<script> 
    var json = [{"State":"a state"}]; 
</script> 

Working Fiddle

+0

Tôi không thể tìm thấy tham chiếu JSON, nhận được lỗi là 'Tên' Json 'không tồn tại trong ngữ cảnh hiện tại 'Nếu tôi thêm,' Newtonsoft.Json.', thì không tìm thấy' Mã hóa '. – dsi

+0

@dhaval http://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode(v=vs.111).aspx – hutchonoid

+0

Cảm ơn bạn. Nó hoạt động hoàn hảo. – dsi

1

Nếu Bạn muốn tạo đối tượng json từ mô hình yor làm như sau:

foreach (var item in Persons) 
    { 
    var jsonObj=["FirstName":"@item.FirstName"] 
    } 

Hoặc Sử dụng Json.Net để làm json từ mô hình của bạn:

string json = JsonConvert.SerializeObject(person); 
0

Trong ASP.NET Core IJsonHelper.Serialize() lợi nhuận IHtmlContent do đó bạn không cần phải quấn nó với một cuộc gọi đến Html.Raw().

Nó phải là đơn giản như:

<script> 
    var json = @Json.Serialize(Model.CollegeInformationlist); 
</script> 
Các vấn đề liên quan