2012-09-10 9 views
5

可能性の重複:
using razor within javascriptjavascript関数でRazor値を使用するにはどうすればよいですか?

私はかみそりのページにモデルからsiimple値を配置し、JavaScript関数に定数値としてそれを使用したいと思います。すなわち

<script> var myValue = @Model.myRecord.Count();</script> 

です。myValue =私のモデルのレコード数です私は例としてmyRecord.Countを使用していますが、それは私のモデルからの任意の値にすることができます。

これは可能ですか?

TIA J

OK私は、次の解決策に出くわし:

<script> var myValue = @(Model.myRecord.Count())</script> 

ちょうど余分な括弧が助けたinthe置きます。

<script> var myValue = @Model.myRecord.Count();</script> 

それだけのjsファイル内にある場合は、カミソリエンジンはまったくそのコードを実行されません。

+2

YESことは可能です。何か間違いに直面していますか? – Shyju

+1

そのコードはうまくいくはずです。エラーは何ですか? – Paul

答えて

8

確かに、正しくエンコードするようにしてください。

@model IEnumerable<MyViewModel> 
<script type="text/javascript"> 
    var model = @Html.Raw(Json.Encode(Model)); 
    // at this stage the model javascript variable represents the JSON encoded 
    // value of your server side model so that you can access all it's properties: 
    alert(model.length); 
</script> 

か::

alert(model[2].Foo.Bar); 

または何たとえば、あなたはJSON全体モデル自体を符号化することができます。

しかし、(このモデルはコレクションを表す場合)あなたが唯一のモデル内の要素の数を気にしている場合:

var count = @Html.Raw(Json.Encode(Model.Count())); 
alert(count); 
2

が、これはレイザーファイルであることを確認してください。