我一直试图找到解决我问题的方法2天了,我真的被卡住了。这是问题所在:
我有一个MVC应用程序(具有依赖注入和工作)只有一个webform。这个页面需要是一个webform,因为它里面有一个ReportViewer,如果我错了,请纠正我,但是MVC View与ReportViewer等服务器控件不兼容。这是页面的导航流程:
我可能会将ReportPath和ServerUrl作为查询字符串的一部分传递,以便报表页面(不是由控制器驱动的aspx)不必转到数据库来获取这些值。但问题是如何检查用户是否有权查看报告(有人可以使用链接查看报告)。
我确实尝试将其挂钩到MVC模型并从ViewPage类继承了该页面。问题是页面由于某种原因不断重新加载。我仍然希望我的页面尽可能少地执行,并且控制器可以处理对授权属性和业务层的调用。所以,作为最后的手段,我想从aspx页面调用控制器,但由于依赖注入,我无法创建它的对象。
有人可以就此提供一些指导吗?我有所有可用的代码但不知道要发布什么。
答案 0 :(得分: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);