ОтказAntaris RazorEngine - Helper Лямбда выражения
Если вы заметили какие-либо ложные предположения в чем-нибудь ниже, пожалуйста, дайте мне знать. Я вложил в это приличную работу, но если есть лучший способ, я счастлив бросить то, что у меня есть.
Short Version
мне нужно повторить функциональность @Html.DisplayFor()
функции MVC без доступа к контексту контроллера.
фон
Я пытаюсь создать PDF-документы из бритвенных файлов (.cshtml). Раньше я использовал Rotativa (на основе wkhtml), который, казалось, работал достаточно хорошо. Тем не менее, мне понадобится генерировать сотни документов порой, и я хотел бы сделать это асинхронно, чтобы сэкономить время. К сожалению, кажется, что что-либо асинхронное не может получить доступ к контексту Controller, который требуется Rotativa. Кроме того, исследования показывают, что wkhtml вообще не может выполняться асинхронно.
Текущего Покушение Решение
Итак, теперь я пытаюсь использовать Antaris RazorEngine для отображения мнения бритвы HTML строк без используя контекст контроллера. Затем я напишу этот HTML в iTextSharp, чтобы сделать PDF. Я считаю, что это должно быть в состоянии запускать асинхронно (если кто-то знает что-то противное, пожалуйста, поправьте меня).
Проблема с раствором
просмотров Наша Razor в значительной степени зависят от объекта HtmlHelper (который требует доступа к контексту контроллера), чтобы сделать такие вещи, как @Html.LabelFor()
или @Html.DisplayFor()
. Я считаю, что мне удалось воспроизвести функциональность LabelFor как автономный вспомогательный метод. К сожалению, метод DisplayFor оказался более сложным. С LabelFor мне просто нужно было получить информацию об атрибутах объекта, переданного через выражение лямбда. Напротив, DisplayFor необходимо получить значение объекта объекта, переданного через выражение лямбда.
Что я Пробовал
- Я рассмотрел десятки сообщений (example) о получении значения, что все требуют доступа к объекту HtmlHelper, и поэтому ControllerContext, который выиграл Не работай.
- Я нашел несколько сообщений (example), которые кажутся очень похожими на то, что я пытаюсь выполнить, но они, похоже, требуют доступа к объекту Model, который я не уверен, что могу получить. Все, что мне действительно доступно для меня, это данные, которые находятся в выражении лямбда.
Прошу прощения за стену с текстом; Я попытался разбить его как можно лучше. Спасибо заранее за любые предложения!