ASP.net razor是否有“包含一次”功能?

时间:2016-09-30 13:15:06

标签: php asp.net razor

在PHP中

include_once。我希望能够用asp.net的@Html.Partial做同样的事情。是否有内置功能来执行此操作?

1 个答案:

答案 0 :(得分:1)

我认为ASP.NET中没有这样的功能,但您可以编写自己的功能:

public static class HtmlPartialHelper
{
    public static MvcHtmlString PartialOnce(this HtmlHelper htmlHelper, string partialViewName)
    {
        if (!htmlHelper.ViewContext.RequestContext.HttpContext.Items.Contains(partialViewName))
        {
            htmlHelper.ViewContext.RequestContext.HttpContext.Items.Add(partialViewName, ""); //any value is good...
            return htmlHelper.Partial(partialViewName);
        }

        return null; //May be string.Empty is better
    }

    public static bool RenderPartialOnce(this HtmlHelper htmlHelper, string partialViewName)
    {
        if (!htmlHelper.ViewContext.RequestContext.HttpContext.Items.Contains(partialViewName))
        {
            htmlHelper.ViewContext.RequestContext.HttpContext.Items.Add(partialViewName, "");
            htmlHelper.RenderPartial(partialViewName);

            return false;
        }

        return true;
    }
}

我不是PHP专家,但我希望得到正确的回报......