2017-09-26 42 views
1

用asp.net。mvc5,如何在javascript中恢復模型? 這裏是我的代碼如何用模型列表打印javascript數組

Ctrl鍵:

public ActionResult Test() { 

    var data = List<string>() { 
     "test", 
     "essai" 
    }; 

    return View(data); 
} 

查看:

@model ... 

@section scripts { 
    <script src="~/Scripts/Parametre/DatePublication.js"></script> 
} 

部分JS:

$(document).ready(function() { 
    console.log(@Model); 
}); 

未找到部分Js中的@Model。

回答

0

你不能因爲在剃刀每內容使用@塊自動HTML通過剃刀編碼剃刀做到這一點。

解決方案是迭代您的列表並創建一個javascript數組。

var myArray = []; 
@foreach (var item in Model) 
{ 
    @:myArray.push('@item'); 
} 
console.log(myArray); 

裏面的@foreach塊,你需要markupJavascript使用@:標記或標籤<text>的標記。

0

Model只能在可以執行服務器代碼的剃鬚刀視圖中使用。如果你想這是在一個外部JavaScript文件中的JavaScript數組,你可以將它讀給剃刀視圖中一個js數組變量,後來在其他腳本

<script> 
    var myArray = @Html.Raw(JsonConvert.SerializeObject(Model)) 
    console.log(myArray); 
</script> 
<script src="ExternalJsFile.js"></script> 

使用,則可以在ExternalJsFile.js訪問myArray的現在。

通過簡單的全局變量傳遞數據不是一個好主意。它們很容易被覆蓋(如果你加載的第三方插件腳本也使用了相同的變量名呢?)所以你應該考慮命名空間數據是安全的。

例如,

<script> 
    var myApp = myApp || {}; 
    myApp.pageData = myApp.pageData || {}; 
    myApp.pageData.model = @Html.Raw(JsonConvert.SerializeObject(Model)); 
</script> 
<script src="ExternalJsFile.js"></script> 

現在在externalJs文件,你可以像console.log(myApp.pageData.model)

訪問