如何将参数从Silverlight传递到RDLC报告,同时保持隐藏状态?

时间:2012-10-15 11:58:36

标签: asp.net silverlight azure parameters rdlc

我尝试在javascript中使用Location = 0来隐藏托管ReportViewer的弹出窗口中的URL地址栏,但是对于某些(显然是“安全”)原因它不起作用,以及我的Azure托管的用户Silverlight应用程序,其中一些来自竞争公司,可以猜出彼此的报价ID,看看谁在引用他们所追求的同一业务的内容。

我知道我可以加密ID,但我希望有更直接的方法在Report.aspx文件中为ReportViewer控件/ ObjectDataSource提供ID,而不会将其作为URL参数显示?

建议非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以在页面上调用s JavaScript(jQuery powered)函数,提供ID,然后,您可以执行GET而不是使用POST打开普通POPUP。用报告打开一个新窗口。当然比POSTHTTPS

除此之外,你在安全性方面也有很多气味。如果请求的参数不属于请求者,为什么甚至允许呈现ReportViewer

关注安全性,您应禁用匿名访问您的应用。然后你就会知道记录了哪个用户。然后,您可以轻松地将用户与引用ID相关联。然后,您可以轻松地检查给定quote id或请求的任何参数是否属于请求它的用户。

顺便问一下,AZURE具体到底是什么?这是一般的Web开发问题,而不是Azure特定的。

使用POST打开窗口的示例JS函数

function OpenWin(someId)
{
 var form = document.createElement('form');
 form.action = 'URL_TO_YOUR_RDLC_ASPX_PAGE';
 form.method = "POST";
 form.target = '_blank'; // this is important to open a new window
 var hiddenId = document.createElement('input');
 hiddenId.name = 'theNameOfTheParam';
 hiddenId.value = someId;
 form.appendChild(hiddenId);
 document.body.appendChild(form);
 form.submit();
}

您可以通过创建额外的隐藏输入来管理输入字段的数量(即要发送的参数)。