Shahzad Mirza Ответов: 0

Создайте строку с помощью представления, вызвав определенное действие и контроллер в пользовательском методе


Привет,

Я хочу сделать метод, который получил действие и имя контроллера в виде строки, и выполнить это действие контроллера и получить результат в виде строки, например, как это делает вспомогательный метод RenderAction в Razor.

То, что я пытаюсь сделать.

public static string RenderViewAsString(string ActionName, string ControllerName, object model)
{
//calling the action and returning the result.
}



Метод, который я сейчас использую:

protected string RenderPartialViewToString(string viewName, object model)
        {
            if (string.IsNullOrEmpty(viewName))
                viewName = ControllerContext.RouteData.GetRequiredString("action");

            ViewData.Model = model;

            using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
                ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);

                return sw.GetStringBuilder().ToString();
            }
        }

Этот метод просто принимает viewname и объектную модель, но он также требует ControllerContext. Поскольку я использую его в BLL, поэтому каждый раз, когда я его запускаю, он дает мне
ControllerContext = null


Я хочу сделать метод, который просто принимает имя действия и имя контроллера с моделью для представления и возвращает мне строку для тела электронной почты, не используя каждый раз один и тот же метод в каждом контроллере.

Если я использовал текущий метод в своем контроллере, то он будет работать правильно, так как ControllerContext установлен, а представление находится в каталоге контроллера. Но что делать, если я хочу использовать представление несколько раз из нескольких контроллеров, а также отправлять метод электронной почты из нескольких контроллеров.

Что я уже пробовал:

Я поискал в интернете и не нашел ничего конкретного, связанного с моим вопросом. Но только тот метод, который я использую в настоящее время.

njammy

Пожалуйста, обновите свой вопрос любым уже написанным вами кодом, который хочет вызвать метод "RenderViewAsString".

deepankarbhatnagar

То, что вы пробовали... пожалуйста, покажите свой код..

Member 10992268

Пожалуйста, обновите свой вопрос

Shahzad Mirza

вопрос обновлен.

0 Ответов