Как вызвать Html.Raw и Html.Partial за пределами страницы бритвы? - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть эти требования.Мне нужно иметь возможность писать этот код в моих видах бритвы:

@Filters.Render(Filters.DateRangeFilter, new DateRangeFilterParameters { });

Альтернатива:

@Html.Partial("/Views/Shared/DateRangeFilter.cshtml", new DateRangeFilterParameters { });

Другими словами, я хочу, чтобы Filters класс обернул Html.Partial.По этой причине я подумал об этом коде:

public class Filters {
    public const string DateRangeFilter = "/Views/Shared/DateRangeFilter.cshtml";

    public static HtmlString Render(string filterPath, object parameters)
    {
        // Here I need to call Html.Partail, how?
    }
}

1 Ответ

0 голосов
/ 29 декабря 2018

Для использования Html.Raw в контроллере вы можете запросить внедренный сервис IHtmlHelper.Например:

HttpContext.RequestServices.GetService(typeof(IHtmlHelper)) as IHtmlHelper;

Или вы можете сделать свою собственную реализацию для помощника.А чтобы использовать Html.Partial, вам нужно использовать IRazorViewEngine, ViewContext и другие вещи.Так что в основном вам нужно реализовать сервис для этого, и вот хороший пример Визуализация частичного представления в контексте внешнего контроллера .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...