2011-07-18 41 views
0

ボタンをクリックすると、ビューからコントローラにビューの現在のモデルを渡す必要があります。ビューからコントローラにASP.NET MVCモデルを渡す

これは、現在のデータをExcelにエクスポートするためのものです。

これを行うにはどのような方法が最適ですか?モデルをビューからJS関数に渡すようにしています。

onclick = "ExportToExcel(this.Model);" 

しかし、データはJSに未定義として渡されています。私は間違って何をしていますか?

ありがとうございました。

答えて

0

jQueryを使用してモデルオブジェクトを投稿し、@Raynosが言ったように、ダウンロードリンクを得ることができます。 これを行うには、モデル(cs/vb)をjavascriptに変換します。

0

onclickコードはグローバルスコープで実行されるため、this === windowです。

私はwindow.Modelがサーバー上で行われるべきデータをExcelにエクスポートし、記録のために

element.onclick = function() { 
    ExportToExcel(this.Model); 
}; 

を試してみてくださいundefined

であると仮定したいとの一時的な作成を取得Excelファイルへのリンクを返す必要がありますユーザーがダウンロードできるサーバー上で

+0

答えをありがとう。私は、これを試してみましたが、引用符で囲まれていなくとも、関数は呼び出されません。また、エクスポートはサーバー上で実行されるので、コントローラー/ javascriptにデータを取得するだけで、サーバー上のModelクラスに渡され、ロジックが実行されます。 –

+0

@DarrenYoung JavaScriptでonclick関数ハンドラを要素にアタッチし、HTMLのアトリビュートとして追加しないでください – Raynos

+0

ありがとう、私は今すぐコマンドを認識しています。しかし、それはまだこれを認識しません。モデル。申し訳ありませんが、私はMVC asp.netを初めて使っています。ありがとう。 –

1

モデルは、コントローラからのビュー(最初はページの読み込み時)に到達した後、アクセスできない、つまり、これ以上何も存在しないということは、Objectと言うことができます。したがって、モデルをJS/Controllerに直接渡すことはできません。モデルからJSへの特定のデータを渡す場合は、実際には隠れた入力にデータを書き込んで、jQueryの入力IDを使用してJava Scriptからアクセスします。

PS:これはかなり古い質問ですが、私はこれについて正しいかどうかを知りたいと思っていました。 :)