Управление сервером asp.net в приложении MVC - PullRequest
1 голос
/ 10 июня 2011

У нас есть серверный элемент управления, который мы хотим использовать в нашем приложении .net MVC.Элемент управления будет только частью страницы, и я хотел бы не проводить рефакторинг всего приложения (включая страницы макета), чтобы эта страница работала.Поэтому я считаю, что мой выбор будет следующим:

  • Просто поместите все на страницу aspx и используйте маршрутизацию для перехода туда, потеряв мои страницы макета
  • Используйте iframe (lame)
  • Использовать HttpContext.Current.Server.Execute (url) (выдает ошибку)
  • Использовать http-запрос для получения HTML-кода, а затем отправить его на страницу, лучше, чем iframe

Так что в идеале я хотел бы использовать HttpContext.Current.Server.Execute для выполнения URL-адреса, возврата HTML и сделать это на всей стороне сервера.Я просто продолжаю получать сообщение об ошибке.Страница доступна из браузера, но маршрутизация оказывает влияние иногда, и тогда я просто получаю «Дочерний запрос не удался».

Мысли?Пожалуйста, также не говорите, что это плохая идея, я уже знаю это.Я просто пытаюсь извлечь выгоду из плохой ситуации.

Спасибо.

1 Ответ

0 голосов
/ 14 июня 2011

В итоге моя страница веб-формы asp.net получила представление MVC и выяснила, где разместить его содержимое. Это в обратном направлении, но работает и обратные передачи также работают. Это было сделано для движка 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...