-1

两天来我一直在努力寻找解决问题的方法,但我真的被困住了。这是问题所在:

我有一个只有一个网络表单的 MVC 应用程序(具有依赖注入和工作)。这个页面需要是一个网络表单,因为它里面有一个 ReportViewer,如果我错了,请纠正我,但是 MVC 视图与像 ReportViewer 这样的服务器控件不兼容。这是页面的导航流程:

  1. 主页导航到 ReportList 页面
  2. ReportList 页面显示用户能够查看的报告并导航到报告页面并将用户选择的报告的 ID 传递给它。
  3. 报表页面要同时根据从报表列表页面传来的ID,从数据库中查找ReportPath和ServerUrl,授权用户,其权限存储在数据库中。

我可以潜在地将 ReportPath 和 ServerUrl 作为查询字符串的一部分传递,以便报告页面(aspx,不是由控制器驱动)不必转到数据库来获取这些值。然而,问题是如何检查用户是否有权查看报告(有人可以只使用链接来查看报告)。

我确实尝试将它挂接到 MVC 模型中并从 ViewPage 类继承页面。那里的问题是页面出于某种原因不断重新加载。我仍然希望我的页面尽可能少地执行操作,并希望有一个控制器来处理对授权属性和业务层的调用。所以,作为最后的手段,我想从 aspx 页面调用控制器,但我无法创建它的对象,因为依赖注入。

有人可以提供一些指导吗?我有所有可用的代码,但不知道要发布什么。

4

1 回答 1

2

如果对任何人有帮助,我找到了答案并在此处发布。

我添加了另一个名为 的类ReportManager,它背后的 aspx 代码调用它来执行请求。通过ReportManager此代码模拟 Controller 调用:

var routeData = new RouteData();
routeData.Values["controller"] = "Report";
routeData.Values["action"] = "SomeAction";
routeData.Values["SomeRouteValueKey"] = "someroutevalue";
var requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), routeData);

IController controller = DependencyResolver.Current.GetService<ReportController>();
controller.Execute(requestContext);
于 2013-07-31T02:26:23.070 回答