ビューバッグを使用して自分のコントローラからビューに渡すユーザーのリストがあります。今私は、ページ上のjavascriptに同じリストを渡すことができる必要があります。 foreachループを使用してリストを再構成することができます:MVC ViewBagからJavaScriptへのリストの受け渡し
@foreach (var item in ViewBag.userList) //Gets list of users passed from controller and adds markers to the map
{
var userLat = item.LastLatitude;
var userLon = item.LastLongitude;
var _userId = item.Id;
<script>array.push({"userId":"'@_userId'","userLat":"'@userLat'","userLon":"'@userLon'"});</script>
}
しかし、これは面倒なアプローチのように思えますし、変更が加えられた場合は多くのリワークが必要になります。スタックオーバーフローについても同様の記事がありますが、それらの多くは以前のバージョンのMVCを使用しており、同じ構文が適用されないようです。何か案は?
すばやく詳細な答えをありがとう!しかし、IEnumerable部分を除いて、次のエラー「ラムダ式を動的ディスパッチ演算の引数として使用できません...」が表示されます。その部分を追加すると、「メソッドの型引数は使用法から推論できません」というエラーが表示されます。助けてくれてありがとう、そしてこれがルーキーミスであればごめんなさい。 p.s.私はこのページのビュー・モデルを使用しています。そのため、ビュー・バッグを使用しています。 – Matt
しかし、ビューモデルは、ビューの要件を満たすために特別に設計したクラスです。この場合、ビューにはこの動的javascriptを生成する必要があります。そのため、ビューモデルには、 'IEnumerable'型のコレクションプロパティが含まれている必要があります。そして、単にキャスト全体を 'Model.Users.Select(...)'に置き換えてください。弱く型付けされたViewBagを残しておけば、適切な 'IEnumerable '型にキャストする必要があります。 –
私はすぐにページを修正し、Viewモデルを使用しました。私はまたあなたの答えの別の1つを参照する必要がありましたhttp://stackoverflow.com/questions/12111729/razor-javascript-and-trailing-semicolon、VS2012でこのバグについて知りませんでした。偉大で有益な答えをありがとう! – Matt