2017-09-26 8 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); 
}); 

部分Jの@Modelが見つかりません。

答えて

0

レイザー@ブロックを使用して、すべてのコンテンツが自動的にレイザーによってコードHTMLあるので、あなたは、レイザーでこれを行うことはできません。

解決策は、リストを反復してjavascript配列を作成することです。

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

@foreachブロックの中で、あなたはmarkupまたはJavascript@:マークアップや<text>タグを使用してマークする必要があります。

0

Modelは、サーバーコードを実行できるかみそりビューでのみ動作します。あなたが外部のJavaScriptファイル内のJavaScriptの配列としてこれをしたい場合は、あなたが今ExternalJsFile.jsにmyarrayのにアクセスすることができますかみそりビュー内のjs配列変数にそれを読んで、他のスクリプトの後半で

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

をそれを使用することができます。

単純なグローバル変数を使ってデータを渡すことは良い考えではありません。それらは上書きされる傾向があります(読み込んだthirdpartyプラグインスクリプトも同じ変数名を使用している場合はどうでしょうか?)だから、名前空間を安全にするために名前空間を考慮する必要があります。

あなたが console.log(myApp.pageData.model)

のようにアクセスすることができる。例えば

、externalJsファイルで今すぐ

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

関連する問題