2012-09-10 33 views
5

thể trùng lặp:
using razor within javascriptLàm cách nào để sử dụng các giá trị Razor trong một hàm javascript?

Tôi muốn đặt một giá trị siimple từ mô hình trên một trang dao cạo và sử dụng nó như là một giá trị không đổi trong một hàm javascript. tức là

<script> var myValue = @Model.myRecord.Count();</script> 

để myValue = số bản ghi trong mô hình của tôi. Tôi đang sử dụng myRecord.Count làm ví dụ, nó có thể là bất kỳ giá trị nào từ mô hình của tôi.

Điều này có khả thi không?

TIA J

OK tôi stumbled trên các giải pháp sau đây:

<script> var myValue = @(Model.myRecord.Count())</script> 

Chỉ cần đặt inthe ngoặc thêm giúp.

+2

YES nó có thể. Bạn có gặp phải bất kỳ lỗi nào không? – Shyju

+1

Mã đó sẽ hoạt động. Lỗi là gì? – Paul

Trả lời

8

Chắc chắn, chỉ cần đảm bảo mã hóa chính xác. Ví dụ, bạn có thể mã hóa JSON toàn bộ mô hình riêng của mình:

@model IEnumerable<MyViewModel> 
<script type="text/javascript"> 
    var model = @Html.Raw(Json.Encode(Model)); 
    // at this stage the model javascript variable represents the JSON encoded 
    // value of your server side model so that you can access all it's properties: 
    alert(model.length); 
</script> 

hay:

alert(model[2].Foo.Bar); 

hoặc bất cứ điều gì.

Nhưng nếu bạn chỉ quan tâm đến số lượng các yếu tố bên trong mô hình (nếu mô hình này đại diện cho một bộ sưu tập):

var count = @Html.Raw(Json.Encode(Model.Count())); 
alert(count); 
2

Hãy chắc chắn rằng đây là trong một tập tin Razor:

<script> var myValue = @Model.myRecord.Count();</script> 

Nếu đó là chỉ trong một file js, động cơ Razor sẽ không chạy mã mà ở tất cả.

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