![](/img/trans.png)
[英]Can you use JavaScript as embedded resources with Asp.Net MVC?
[英]asp.net mvc - how can you loop through model data in javascript
我想在javascript中將數據添加到列表框中,但是字符串構建語法讓我感到難過:
var yourobject = '<%=Model.Inserts['+ i + ']%>';
導致錯誤:“字符文字中的字符過多”
所有代碼:
var mlb = cm.createListBox('mylistbox', {
title: 'My list box',
onselect: function(v) {
tinyMCE.activeEditor.windowManager.alert('Value selected:' + v);
}
});
for (var i = 0; i < '<%=Model.Inserts.Count() %>'; i++) {
var yourobject = '<%=Model.Inserts['+ i + ']%>';
mlb.add(yourobject, i);
}
我知道這是一個老問題,但答案已經過時,因為現在可以了。
這可以在razor語法中使用@:
在行的開頭用javascript運行(從c#中轉義)。
我的Model.xValues
是從控制器傳遞的List<String>
。 和yValues
是List<int>
這是一個如何在javascript函數中循環模型數據的快速示例。
<script type="text/javascript">
function drawChart() {
// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', '@Model.LabelName');
data.addColumn('number', '@Model.ValueName');
@for(int i = 0; i < Model.xValues.Count; i ++)
{
@: data.addRow(['@Model.xValues.ElementAt(i)', @Model.yValues.ElementAt(i)]);
}
... etc
</script>
您不能以這種方式將在服務器上運行的代碼( <% %>
塊的音譯)與客戶端上的運行(for循環)混合在一起。 在C#而不是在javascript中進行迭代,並在字符串中創建一個javascript對象,您可以簡單地分配。
<% var aray = "[";
foreach (var insert in Model.Inserts) {
aray += "'" + insert + "',";
}
aray = aray.TrimEnd(",") + "]";
%>
var mlb = <% aray %>;
您需要在.NET代碼塊中循環遍歷Model對象,並將這些值分配給該循環中的JavaScript變量:
var count = 0, yourobject; // This is JavaScript
<% for (var i = 0; i < Model.Inserts.Count(); i++) { %> // This is .NET
yourobject = '<%= Model.Inserts[i] %>'; // This is JS AND .NET
mlb.add(yourobject, count++); // This is JavaScript
<% } %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.