1

C# 3.0 を使用して ASP.NET MVC のプロジェクトに取り組んでいます。

OLAP に Dundas Chart Control を使用しています。Dundas コントロールは MVC を直接サポートしていないため、分離コード ファイルを含む標準の ASP.NET ページで使用されます。このページは、コントローラー アクションから返された通常のビューの iFrame に表示されます。

iFrame に、(jQuery を使用して) Ajax 経由でコントローラーのメソッドにフォームを送信するボタンがあります。現在のレポートの XML を返す OlapChart の拡張メソッドも作成しました。

私が探しているのは、拡張メソッドによって生成された XML を、Ajax 送信を処理するコントローラー アクションに取得する方法です。

私は ASP.NET MVC を使用してのみ開発したので、コード ビハインドと ASP.NET コントロールで明らかな何かが欠けている可能性があります。

ありがとう。

4

2 に答える 2

0

このプロジェクトでは、Spring.net IOC objects.xml ファイルと Spring.net XmlObjectFactory を使用して、分離コードでコントローラーのインスタンスを作成することでこれを「解決」しました。

ボタンについては、コード ビハインドに HtmlInputButton を追加し、onclick イベント ハンドラーを設定しました。これは、Dundas の OlapManager.GetCallbackEventReference() メソッドと、呼び出されたコントローラー メソッドへの呼び出しを提供する OLAP チャートに割り当てられた新しいコマンド ハンドラーを組み合わせて使用​​することで、非同期化されました。

Page_Load() 関数では:

OlapClient1.OlapChart.Command += new CommandEventHandler(OlapChart_Command);
            SaveDci.Attributes["onclick"] =
                OlapClient1.OlapManager.GetCallbackEventReference(OlapClient1.OlapChart, "SaveDci", typeof(OlapChart));
            SaveSnapshot.Attributes["onclick"] =
                OlapClient1.OlapManager.GetCallbackEventReference(OlapClient1.OlapChart, "SaveSnapshot", typeof(OlapChart));

OLAP コマンド ハンドラ:

private void OlapChart_Command(object sender, CommandEventArgs e)
    {
        if (e.CommandName.Equals("SaveDci"))
        {
            // Function to call appropriate controller method
            SaveAsData(sender, e);
        }
        if (e.CommandName.Equals("SaveSnapshot"))
        {
            // Function to call appropriate controller method
            SaveAsSnapshot(sender, e);
        }
    }

iFrame は、jQuery と OlapMananger.ExecuteClientScript() メソッドを使用した応答で更新されました。

OlapClient1.OlapManager.ExecuteClientScript("$('#UpdatePanel').text('" + returnMessage + "');");
于 2010-02-11T10:14:41.860 に答える