2016-10-02 12 views
1

mvcの配列モデルがhtmlページに渡されました 「.myClass」のdivがいくつかありますが、それらのいずれかがクリックされた場合は、関数を呼び出してidを取得しています(それぞれ異なる整数IDを持っています)。このIDを配列のインデックスとして使用するには、どうすればよいのですか?このコードは機能していません。mvc配列のインデックスとしてjs変数を使用できますか?

$(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html("@Model[id].name"); 
}); 
+0

JavaScriptを使用してサーバー側の配列をjsonとして出力する必要があります。 – charlietfl

+1

JavaScriptコードがブラウザで実行され、C#コードが異なる時間にサーバー上で実行されるため、これは不可能です。新しいIDを持つ属性をクリックした後にページを更新し、MVCビューでリクエストパラメータを使用する必要があります。 –

+0

@TomášHübelbauerそれは非常に古い学校の考え方です – charlietfl

答えて

0

かみそりは、ページをレンダリングしようとするとC#のコードは、サーバー上で実行されるように、あなたはそのようなjsファイルにサーバーコードを混在させることはできません。あなたのクリックイベントは、カミソリが生成されたマークアップを送信した後にクライアント側で発生します。

具体的な使用例については、まずモデルを読んで、ローカルのJavaScript配列を設定する必要があります。次に、その配列からアイテムを読み込むことができます。

あなたのモデルがいくつかのコレクションタイプであると仮定します。

$(function(){ 

    //Store the Model to a local js variable. 
    var myArr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)); 

    $(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html(myArr[id].name); 
    }); 

}); 

別のオプションは、それを使用します、あなたのアクションメソッドは、一意のIDを受け入れるサーバーへのAJAX呼び出しを行い、それが実体を再構築している使用して、クライアントとクライアントに送信することです。

関連する問題