我们有一个服务器控件,我们想在.net MVC应用程序中使用。控件只是页面的一部分,我不想重构整个应用程序(包括布局页面)以使这一页工作。所以我相信我的选择如下。
所以我想使用HttpContext.Current.Server.Execute来执行url,返回html并执行所有服务器端。我只是不断收到错误。该页面可以从浏览器访问,但路由有时会生效,然后我得到一个“子请求失败”。
思考?也请不要说这是个坏主意,我已经知道了。我只是想尽力做好事情。
感谢。
答案 0 :(得分:0)
我最终让我的asp.net Web表单页面获取了MVC视图,并找出了它的内容。它向后退,但是有效,而且回发也有效。这是针对具有Action和视图的Razor引擎完成的,而不是局部视图。
var controller = new CalendarController();
var routeData = new System.Web.Routing.RouteData();
routeData.Values.Add("controller", "CalendarController");
controller.ControllerContext = new ControllerContext(new FakeHttpContext(), routeData, controller);
try
{
using (StringWriter sw = new StringWriter())
{
var viewResult = controller.Index() as ViewResult;
var view = ViewEngines.Engines.FindView(controller.ControllerContext, "relative_pathto_view", "");
ViewContext viewContext = new ViewContext(controller.ControllerContext, view.View, controller.ViewData, controller.TempData, sw);
view.View.Render(viewContext, sw);
var page = sw.GetStringBuilder().ToString();
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}