4
mvcアプリケーションでGoogleチャートを作成しようとしています。ここで ビュー内のJavascriptからMVC3モデルプロパティにアクセス
は、Googleのチャートの抜粋であるjavascriptのfunction drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Task');
data.addColumn('number', 'Hours per Day');
data.addRows([
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
}私は基本的に私のモデル内の項目を反復ループのために上記data.addRowsラインを交換されてやりたいものを
。私は当然のようにのようなタグの外観図でうまく繰り返すことができます:
"@foreach (var item in Model) {
<div>@Html.DisplayFor(modelItem => item.Customer.Name)</div>
}"
私はタグ内の私のモデルを反復処理するための解決策を見つけるように見えることはできません。何か案は?あなたには、いくつかの値を格納し、ビューに沿って渡す
public class MyViewModel
{
public object[][] Values { get; set; }
}
れる:
これは非常に近いと思いますが、私のモデルには「既成」の値のコレクションがありません。モデルは実際には変更が困難なクラスです。このメソッドは "AppItems"のリストを返します。public List Apps() { Uri appsUri; Uri.TryCreate(ApiTarget、 "/ apps"、out appsUri); var result = _restClient.Get(appsUri); var apps = JsonConvert.DeserializeObject <リスト>(結果); return apps; }だから、私が必要と思うのは、アイテムを繰り返し処理し、それらをJavaScriptに追加する方法です。 –
Chris
@Chris、あなたは非常に簡単にそれを変更することができるはずです。それはビューモデルが意図しているものです。ドメインモデルをビューに渡すのではないですか?ビューには特定のビューモデルを常に定義し、ドメインモデルは一度も渡すべきではありません。そこで、このビューに必要なすべてを含むビューモデルを定義してください。私はあなたが必要とするかもしれない他のものが何かを知っていませんが、 'public [[Values] {get;セット; }プロパティは、javascriptを生成するために必要です。必要な他のプロパティを含めることができます。あなたのコントローラでは、モデルをビューモデルにマッピングします。 –
はい、私はドメインモデルを直接ビューに渡しています:(私はこのアドバイスを受けて、ドメインクラスを表すモデルを作成します)ありがとう! – Chris