Я использую Orchard 1.6 и хочу визуализировать вид строки с пользовательским макетом темы и так далее.Как визуализировать фигуру в строку?
На самом деле существует orchard cms rendering shape as email template, но мне нужно еще некоторые детали (не могу добавить комментарий к этому ответу, я не имею репутацию достаточно :(, и не могу отправить личное сообщение)
Я делаю это в контроллер для тестирования (в будущее я хочу сделать Int в отдельной задаче). Таким образом, контроллер (модель простой класс с некоторыми свойствами)
var renderer = new ViewRenderer(
_workContextAccessor,
_siteThemeService,
_services);
var shape = ShapeFactory.MyTestShape(Model: model);
var result = renderer.RenderMessage(shape);
рендер
public string RenderMessage(dynamic shape)
{
var httpContext = new ViewRendererHttpContext(new Uri("http://localhost/orchard/"));
var routeData = new RouteData();
routeData.DataTokens.Add("IWorkContextAccessor", _workContextAccessor);
routeData.Values["controller"] = "Dummy";
var requestContext = new RequestContext(httpContext, routeData);
var controllerContext = new ControllerContext(requestContext, new DummyController());
var viewContext = new ViewContext(controllerContext, new ShapeView(shape), new ViewDataDictionary(shape.Model), new TempDataDictionary(), new StringWriter());
var scope = _workContextAccessor.CreateWorkContextScope(viewContext.HttpContext);
scope.WorkContext.CurrentTheme = _siteThemeService.GetSiteTheme();
var page = new ViewRendererWebViewPage(viewContext, new ViewDataDictionary<dynamic>(shape.Model));
var displayHelperFactory = _services.WorkContext.Resolve<IDisplayHelperFactory>();
var display = displayHelperFactory.CreateHelper(page.ViewContext, page);
var data = display(shape).ToHtmlString();
scope.Dispose();
return data;
}
ViewRendererHttpContext, только что полученный из HttpContextBase и очень простой (может опубликовать его код), DummyController - пустой класс, полученный из Controller, ShapeView - это класс epmty, полученный из IView.
Ofc У меня есть View/MyTestShape.cshtml в моем модуле.
Проблема при выполнении var data = display(shape).ToHtmlString();
в глубину var result = htmlHelper.Partial(harvestShapeInfo.TemplateVirtualPath, displayContext.Value);
(класс «ShapeTemplateBindingStrategy», метод «частное IHtmlString Рендер (......)») У меня есть исключение «Метод или операция не выполнена.»
Какой метод и в каком классе я должен реализовать?
Спасибо за любые советы. Мой английский очень плохой, так жаль его.