我通过在代码隐藏中创建控制器实例“解决”了这个问题 - 在这个项目中使用 Spring.net IOC objects.xml 文件和 Spring.net XmlObjectFactory。
对于按钮,我在代码隐藏中添加了一个 HtmlInputButton 并设置了一个 onclick 事件处理程序。这是通过使用 Dundas OlapManager.GetCallbackEventReference() 方法与分配给 OLAP Chart 的新命令处理程序实现异步的,该处理程序提供对调用的控制器方法的调用。
在 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 + "');");