首页 > 解决方案 > 如何在剃须刀页面外调用 Html.Raw 和 Html.Partial?

问题描述

我有这个要求。我需要能够在我的剃刀视图中编写此代码:

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

替代方案是:

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

换句话说,我希望Filters类 wrap 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?
    }
}

标签: razorasp.net-core

解决方案


要在控制器中使用 Html.Raw,您可以请求注入的IHtmlHelper服务。例如:

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

或者您可以为帮助程序执行您自己的实现。为了使用,Html.Partial您需要使用IRazorViewEngine,ViewContext和其他东西。所以基本上你需要为此实现一个服务,这是一个很好的例子Render Partial View To String Outside Controller Context

我不知道是否有更简单的方法来实现这些,但这就是我的想法。


推荐阅读