Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 从aspx页面调用控制器_C# 4.0_Asp.net Mvc 4_Webforms - Fatal编程技术网

C# 4.0 从aspx页面调用控制器

C# 4.0 从aspx页面调用控制器,c#-4.0,asp.net-mvc-4,webforms,C# 4.0,Asp.net Mvc 4,Webforms,两天来我一直在寻找解决问题的方法,我真的被卡住了。问题是: 我有一个MVC应用程序(带有依赖注入和works),只有一个webform。此页面需要是webform,因为其中包含ReportViewer,如果我错了,请更正,但MVC视图与ReportViewer等服务器控件不兼容。这是页面的导航流程: 主页导航到ReportList页面 ReportList页面显示用户能够查看并导航到报告页面的报告,并向其传递用户选择的报告的ID 报告页面应根据从报告列表页面传递的ID从数据库中查找报告路径和服务

两天来我一直在寻找解决问题的方法,我真的被卡住了。问题是:

我有一个MVC应用程序(带有依赖注入和works),只有一个webform。此页面需要是webform,因为其中包含ReportViewer,如果我错了,请更正,但MVC视图与ReportViewer等服务器控件不兼容。这是页面的导航流程:

  • 主页导航到ReportList页面
  • ReportList页面显示用户能够查看并导航到报告页面的报告,并向其传递用户选择的报告的ID
  • 报告页面应根据从报告列表页面传递的ID从数据库中查找报告路径和服务器URL,同时授权其权限存储在数据库中的用户
  • 我可能会将ReportPath和ServerUrl作为查询字符串的一部分传递,这样报表页面(aspx,不是由控制器驱动的)就不必转到数据库来获取这些值。然而,问题是如何检查用户是否有权查看报告(有人可以使用链接查看报告)

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


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

    我找到了答案,如果对任何人都有帮助,就在这里发布

    我添加了另一个名为
    ReportManager
    的类,aspx代码隐藏调用该类来执行请求。
    ReportManager
    通过以下代码模拟控制器调用:

    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);
    
    var routeData=new routeData();
    路由数据值[“控制器”]=“报告”;
    RoutedData.Values[“action”]=“SomeAction”;
    routeData.Values[“SomeRouteValueKey”]=“someroutevalue”;
    var requestContext=newrequestcontext(newhttpcontextwrapper(HttpContext.Current),routeData);
    IController controller=DependencyResolver.Current.GetService();
    controller.Execute(requestContext);