2011-07-22 22 views
1

私のビューはいくつかのjsコードを生成します。いくつかのプロパティを取得するために、モデルをインターフェイスタイプにキャストする必要があります。javascript文字列内のaspカミソリビューのキャストモデル

<script type="text/javascript" language="javascript"> 
var js_array = []; 
@for (var i = 0; i < (Model as MyProject.Models.IMyInterface).PropertyList.Count; i++) { 
    <text> 
     js_array['@(Model as MyProject.Models.IMyInterface).PropertyList[i].id'] = {}; 
    </text> 
} 
</script> 

私が得た:ここ

は一例です

<script type="text/javascript" language="javascript"> 
var js_array = []; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {}; 
</script> 

しかし、私は必要があります。

<script type="text/javascript" language="javascript"> 
var js_array = []; 
js_array['1'] = {}; 
js_array['2'] = {}; 
js_array['3'] = {}; 
js_array['4'] = {}; 
js_array['5'] = {}; 
js_array['6'] = {}; 
js_array['7'] = {}; 
js_array['8'] = {}; 
</script> 

あなたは価値の代わりにこの表示タイプを見ることができるように...

どのように修正できますか?

+1

その理由は '@()'が '()'に含まれているものだけを解析する特別なブロックであるからです。あなたのコードは '()'のクラスだけを持っているので、クラスの 'ToString'を呼び出し、' .PropertyList ... 'はもはや' @ 'の制御下にないので通常の出力とみなされます。 – Buildstarted

答えて

4

カッコが2つ欠けているようです。

@for (var i = 0; i < (Model as MyProject.Models.IMyInterface).PropertyList.Count; i++) { 
    <text> 
     js_array['@((Model as MyProject.Models.IMyInterface).PropertyList[i].id)'] = {}; 
    </text> 
} 

私は次のようにそれが少し読みやすくなります

@foreach (var property in ((MyProject.Models.IMyInterface)Model).PropertyList) { 
    <text> 
     js_array['@(property.id)'] = {}; 
    </text> 
} 

そして、あなたのモデルがインタフェースを実装している場合、あなたもそれを作る、キャストは必要ありません。

@foreach (var property in Model.PropertyList) { 
    <text> 
     js_array['@(property.id)'] = {}; 
    </text> 
} 
関連する問題